Функция - оракул (PLS-00103: Обнаружен символ "") - PullRequest
2 голосов
/ 28 июня 2019

Я пытаюсь создать простую функцию оракула, которая зацикливается на некоторых записях, а затем вставляет записи для каждой из этих ..

CREATE OR REPLACE FUNCTION addNewRolesToAllGDP
    return NUMBER
    is dummy number;
BEGIN
    FOR applicationId IN (SELECT APPID
                          FROM GRPAPPLICATIONINSTANCES
                          where GRPAPPID = (select GRPAPPID
                                            from GRPAPPLICATIONS
                                            where GRPNAME = 'DIGITAL_OFFICE')
                            AND APPID in (select APPID from APPLICATIONS where REGEXP_LIKE(APPNAME, '[[:digit:]]')))
        LOOP
            INSERT INTO ROLES (ROLID, ROLNAME, APPID)
            VALUES (SEQROLES.nextval,
                    'INVENTORY_REQUESTER',
                    applicationId);
            INSERT INTO ROLES (ROLID, ROLNAME, APPID)
            VALUES (SEQROLES.nextval,
                    'INVENTORY_OWNER',
                    applicationId);
            INSERT INTO ROLES (ROLID, ROLNAME, APPID)
            VALUES (SEQROLES.nextval,
                    'INVENTORY_ADMIN',
                    applicationId);
        END LOOP;
    RETURN 1;
END;

alter function addNewRolesToAllGDP compile;

Это утверждение дает мне следующее в USER_ERRORS:

PLS-00103: Обнаружен символ "" при ожидании одного из следующих действий: (возврат сжатого скомпилированного пакета

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Я не уверен, что это проблема, но я заметил, что у вас нет косой черты после оператора END функции. В инструментах Oracle без этой косой черты оператор фактически не завершается, и команда ALTER включается как часть того же оператора. Это может вызвать странные синтаксические ошибки.

Если это проблема, то по сути этот вопрос является дубликатом oracle SQL, а также как завершить команду в файле SQL? .

Отредактировано, чтобы добавить Как уже говорили другие в комментариях, тот же код, кажется, прекрасно мне подходит, когда я вырезал и вставил его из вашего поста. Исходя из ошибки и позиции, в которой она сообщается, я думаю, что в конце первой строки ваш исходный источник содержит невидимый символ, который вызывает ошибку синтаксического анализатора.

0 голосов
/ 28 июня 2019

Используется для запуска этого в Intellij, который дал мне заявленное поведение.После запуска из sqlDeveloper он скомпилировался нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...