create or replace trigger print_salary_change
before delete or insert or update on emp
for each row
declare
salary_balance number;
begin
salary_balance=:new.salary=:old.salary;
dbms_output.put_line('old salary is:'||:old.salary);
dbms_output.put_line('ole salary is:'||:new.salary);
dbms_output.put_line('old salary is:'||to_char(salary_balance));
end print_salary_change;
before delete or insert or update on emp
for each row
declare
salary_balance number;
begin
salary_balance=:new.salary=:old.salary;
dbms_output.put_line('old salary is:'||:old.salary);
dbms_output.put_line('ole salary is:'||:new.salary);
dbms_output.put_line('old salary is:'||to_char(salary_balance));
end print_salary_change;
解决方案 »
- vb程序,与oracle数据库连接 乱码问题
- 数据库设计
- 在查询语句中怎样定义变量
- 求会oracle和mysql的大虾,把oracle语句转换成mysql语句,急急急
- 分享教程
- 各位兄弟姐妹帮帮忙,求一个trigger 写在oracle DB中的
- oracle 日期时间的问题,在线等。。。
- ORA-01089:immediate shutdown in progress-no operations are permitted!
- 如何取得登录到数据库的用户数??????????
- ORACLE的存储过程如何返回结果集?
- orcale ORA-04098: 触发器 'SCOTT.TEST_PK'
- PL/SQL DEV里面用DBLINK的查询语句为什么可以提交呢?
-------- ----------------------------------------------------------------------------------------------------------------------------------------------------
4/16 PLS-00049: bad bind variable 'NEW.SALARY'
4/28 PLS-00049: bad bind variable 'OLD.SALARY'
4/15 PLS-00103: Encountered the symbol "=" when expecting one of the following: := . ( @ % ; The symbol ":= was inserted before "=" to continue.
5/40 PLS-00049: bad bind variable 'OLD.SALARY'
6/40 PLS-00049: bad bind variable 'NEW.SALARY'SQL>
create or replace trigger print_salary_change
before delete or insert or update on emp
for each row
declare
salary_balance number;
begin
salary_balance = ((:new.emp_salary) - (:old.emp_salary));
dbms_output.put_line('old salary is:'||:old.emp_salary);
dbms_output.put_line('new salary is:'||:new.emp_salary);
dbms_output.put_line('the balance is:'||salary_balance);
end print_salary_change;
salary_balance := ((:new.emp_salary) - (:old.emp_salary));
在delete 的时候 就不会有 :old
所以你这个触发器肯定会出问题的。
before update on emp--delete or insert or
for each row
declare
salary_balance number;
begin
salary_balance := :new.emp_salary - :old.emp_salary;
dbms_output.put_line('old salary is:'||:old.emp_salary);
dbms_output.put_line('new salary is:'||:new.emp_salary);
dbms_output.put_line('the balance is:'||salary_balance);
end print_salary_change;
----------------------------------------------------------SQL> show errors trigger print_salary_change
没有错误于 TRIGGER SCOTT.PRINT_SALARY_CHANGE