Я пытаюсь создать триггер с помощью «Oracle SQL Developer» в «Oracle 11G».Но при каждой попытке я получаю сообщение «ORA-24344: успех с ошибкой компиляции», и мой триггер частично создается с ошибками.
Моя версия Oracle SQL Developer - «3.0.04», а версия сервера - «Oracle Database 11G Release 11.2.0.4.0 (64-разрядная версия)».Каждый раз, когда я пытаюсь создать триггер, я получаю одно и то же сообщение и понимаю, что он останавливает выполнение в первой точке с запятой.Я перепробовал все написанное в здесь , похоже, что возникла та же проблема, но ни одна из них не помогла.
Например, я пытаюсь создать триггер, например:
create or replace
TRIGGER TEST_TRG
BEFORE INSERT ON TEST_TABLE2
REFERENCING NEW AS NEW FOR EACH ROW
DECLARE testvar number;
BEGIN
testvar := test_sequence.nextval;
INSERT INTO TEST_TABLE(id,data) VALUES(testvar,:NEW.id);
END TEST_TRG;
/
Я получаю:
Error starting at line 0 in command:
CREATE OR REPLACE TRIGGER TEST_TRG
BEFORE INSERT ON TEST_TABLE2
REFERENCING NEW AS NEW FOR EACH ROW
DECLARE testvar number
Error report:
SQL Command: trıgger TEST_TRG
Failed: ORA-24344: success with compilation error
24344. 00000 - "success with compilation error"
*Cause: A sql/plsql compilation error occurred.
*Action: Return OCI_SUCCESS_WITH_INFO along with the error code
Bind Variable "NEW" is NOT DECLARED
anonymous block completed
Как видите, он думает, что оператор заканчивается при первом появлении точки с запятой.Чтобы доказать свое подозрение, я выполнил еще один тест, удалив ненужный оператор DECLARE
:
CREATE OR REPLACE TRIGGER TEST_TRG
BEFORE INSERT ON TEST_TABLE2
REFERENCING NEW AS NEW FOR EACH ROW
BEGIN
INSERT INTO TEST_TABLE(id,data) VALUES(test_sequence.nextval,:NEW.id);
END TEST_TRG;
/
, который вызвал ту же ошибку, но в другой позиции (снова в первой точке с запятой):
Error starting at line 0 in command:
CREATE OR REPLACE TRIGGER TEST_TRG
BEFORE INSERT ON TEST_TABLE2
REFERENCING NEW AS NEW FOR EACH ROW
BEGIN
INSERT INTO TEST_TABLE(id,data) VALUES(test_sequence.nextval,:NEW.id)
Error report:
SQL Command: trıgger TEST_TRG
Failed: ORA-24344: success with compilation error
24344. 00000 - "success with compilation error"
*Cause: A sql/plsql compilation error occurred.
*Action: Return OCI_SUCCESS_WITH_INFO along with the error code
Error starting at line 6 in command:
END TEST_TRG
Error report:
Unknown Command
Так что вопрос очевиден.Почему я не могу создать эти триггеры и что я должен сделать для их создания?