Ошибка (14,1): PLS-00103: обнаружен символ /

У меня проблема с триггером ниже. Я использую SQLDeveloperx86 Build 15.21 (v4.0.2.15). Журнал компилятора выдает ошибку, показанную в заголовке этого сообщения. Следовательно, я не могу использовать триггер. Волнистая линия смерти появляется под символом "/".

create or replace trigger clientexists
        after insert on DISPATCH
        for each row
        declare 
          countRows Integer;
          begin
            select count(*) into countRows from CLIENT
            where CLIENT.name = DISPATCH.client;
            if countRows = 0 then
                  insert into CLIENT
                  values(:new.client,NULL,NULL,NULL);
            end if;
        end;
        /
        show error

person user4021524    schedule 17.09.2014    source источник
comment
Перед созданием триггера вам необходимо установить разделитель на /.   -  person hjpotter92    schedule 17.09.2014
comment
Извините, вы можете уточнить это, насколько я знаю, мне не нужно было устанавливать что-либо в отношении косой черты раньше.   -  person user4021524    schedule 17.09.2014
comment
Что возвращает show error?   -  person a_horse_with_no_name    schedule 17.09.2014
comment
Вероятно, в вашем триггере есть ошибка SQL. Вы это проверили?   -  person AndreDuarte    schedule 17.09.2014
comment
Вы компилируете это из таблицы SQL, и в этом случае все выглядит нормально; или из окна редактора кода (для существующего триггера или из выбора таблицы- ›триггер-› создать)? / и show errors следует опустить в редакторе кода, и вы получите красную волнистую линию.   -  person Alex Poole    schedule 17.09.2014


Ответы (1)


Если вы компилируете это из окна редактора кода, то / недействителен:

окно редактора кода с ошибкой

И тоже не show errors, поскольку это будет рассматриваться как часть оператора для этого триггера, а не как отдельная клиентская команда. Если вы удалите оба, вы получите ORA-00904, потому что вы имеете в виду DISPATCH.client вместо :NEW.client; с этим исправленным он компилирует:

Окно редактора кода работает

Но если вы выполняете свой код из таблицы SQL, вам понадобится косая черта в конце и вы можете использовать show errors:

Окно рабочего листа SQL

person Alex Poole    schedule 17.09.2014
comment
Большое спасибо за это, Алекс, очевидно, я немного запутался в этом: тогда новая команда. Я изучу это дальше, у вас есть хороший материал по этой теме? - person user4021524; 18.09.2014
comment
@ user4021524 - документация по именам корреляций это хорошее место для начала. - person Alex Poole; 18.09.2014