2015-03-11 3 views
2

Я изучаю триггеры от [http://www.tutorialspoint.com/plsql/plsql_triggers.htm][1] с sqldeveloper и я подключил базу данных Oracle 11g. Я создал таблицу клиентов успешно. Но когда я попытался создать триггер:ошибка компиляции триггера в sqldeveloper с oracle11g

CREATE OR REPLACE TRIGGER display_salary_changes 
BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW 
WHEN (NEW.ID > 0) 
DECLARE 
    sal_diff number; 
BEGIN 
    sal_diff := :NEW.salary - :OLD.salary; 
    dbms_output.put_line('Old salary: ' || :OLD.salary); 
    dbms_output.put_line('New salary: ' || :NEW.salary); 
    dbms_output.put_line('Salary difference: ' || sal_diff); 
END; 

я получаю эти ошибки:

Error starting at line : 1 in command - 
CREATE OR REPLACE TRIGGER display_salary_changes 
BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW 
WHEN (NEW.ID > 0) 
    DECLARE 
    sal_diff number 
Error report - 
SQL Command: trıgger DISPLAY_SALARY_CHANGES 
Failed: Warning: yürütme uyarı ile tamamlandı 

Error starting at line : 7 in command - 
BEGIN 
    sal_diff := :NEW.salary - :OLD.salary; 
    dbms_output.put_line('Old salary: ' || :OLD.salary); 
    dbms_output.put_line('New salary: ' || :NEW.salary); 
    dbms_output.put_line('Salary difference: ' || sal_diff); 
END; 
Error report - 
ORA-06550: line 2, column 5: 
PLS-00201: identifier 'SAL_DIFF' must be declared 
ORA-06550: line 2, column 5: 
PL/SQL: Statement ignored 
ORA-06550: line 3, column 60: 
PLS-00487: Invalid reference to variable 'SQLDEVBIND1Z_2' 
ORA-06550: line 3, column 5: 
PL/SQL: Statement ignored 
ORA-06550: line 4, column 60: 
PLS-00487: Invalid reference to variable 'SQLDEVBIND1Z_1' 
ORA-06550: line 4, column 5: 
PL/SQL: Statement ignored 
ORA-06550: line 5, column 51: 
PLS-00201: identifier 'SAL_DIFF' must be declared 
ORA-06550: line 5, column 5: 
PL/SQL: Statement ignored 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

Что не так с этим создать блок запуска?

+1

Ваш стек ошибок не кажется, джайв с кодом вы публикуемую. Есть ли что-нибудь еще в вашем окне разработчика SQL, кроме инструкции 'CREATE TRIGGER'? –

+0

тот же триггер, который работает в моем компьютере с Oracle Database 11g версии 11.2.0.4.0 – TechnoCrat

+0

Когда я создаю триггер как новый триггер вроде этого: http://imgur.com/axdMCmC, он скомпилирован автоматически без каких-либо ошибок. Но когда я создаю триггер в файле .sql, я получаю ошибки, когда мне надоело запускать блок следующим образом: http://imgur.com/ubwTCig. Я не мог понять. Спасибо за помощь. – user3246402

ответ

Смежные вопросы