PLSQL触发器编译错误

PLSQL触发器编译错误,plsql,triggers,oracle10g,plsqldeveloper,Plsql,Triggers,Oracle10g,Plsqldeveloper,PLSQL触发器创建时出现编译错误,无法更新表 create or replace trigger dis_salary_changes before update of Salary on system.emp for each row when (new.Eno in('E1','E2','E3','E4','E5')) declare sal_diff integer; begin sal_diff := :new.salary - :old.salary;

PLSQL触发器创建时出现编译错误,无法更新表

create or replace trigger dis_salary_changes
before update of Salary on system.emp
for each row
when (new.Eno in('E1','E2','E3','E4','E5'))
declare
    sal_diff integer;
    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;
/

除了一些事情外,触发器或多或少是正常的

首先,不要在业务中使用
SYSTEM
schema。创建另一个用户并在那里测试您的技能(或者,使用一个预安装的用户,例如
SCOTT
HR
,如果他们在那里的话)。如果继续在
系统中工作
,可能会使数据库出错

在代码中,唯一的语法错误出现在最后一个
DBMS\u输出中。PUT\u LINE
call-删除
SAL\u DIFF
变量前面的冒号:

CREATE OR REPLACE TRIGGER dis_salary_changes
   BEFORE UPDATE OF Salary
   ON SYSTEM.emp
   FOR EACH ROW
   WHEN (new.Eno IN ('E1',
                     'E2',
                     'E3',
                     'E4',
                     'E5'))
DECLARE
   sal_diff   INTEGER;
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);
                                                  ^
                                                  remove it
END;
/
此外,一旦计算出差异,就不会对这些信息进行任何处理。这是故意的吗

create or replace trigger dis_SAL_changes
before update of SAL on emp
for each row
when (new.EMPNO in('E1','E2','E3','E4','E5'))
declare
    SAL integer;
    begin
        SAL := :new.SAL - :old.SAL;
        dbms_output.put_line('Old SAL= '|| :old.SAL);
        dbms_output.put_line('New SAL= '|| :new.SAL);
        dbms_output.put_line('SAL difference= '|| :SAL);
    end;

触发已编译的DISU SAL_更改

使用
显示错误
或查询
用户错误
视图以查看对象的实际错误。请阅读-总结是,这不是解决志愿者问题的理想方法,可能会对获得答案产生反作用。请不要将此添加到您的问题中。