本人刚刚接触Oracle,想向各位熟悉Oracle的大神请教一下,oracle sql developer是否无法使用行级触发器的new和old变量??我定义的触发器能够在sqlplus中编译并且起作用,但是放到 sql developer上执行的时候总是弹出输入绑定的对话框。
百度两个小时都没有找到确定的答案。是sql developer设置问题?还是sql developer 根本不支持这种触发器的new和old变量?
希望各位指点一下,谢谢。
create or replace trigger tri_emp
before update
on employees
for each row
begin
if :new.salary>:old.salary then
dbms_output.put_line(:new.first_name||'工资调高了');
elsif :new.salary<:old.salary then
dbms_output.put_line(:new.first_name||'工资调低了');
else
dbms_output.put_line(:new.first_name||'工资没有调整');
end if;
end tri_emp;
百度两个小时都没有找到确定的答案。是sql developer设置问题?还是sql developer 根本不支持这种触发器的new和old变量?
希望各位指点一下,谢谢。
create or replace trigger tri_emp
before update
on employees
for each row
begin
if :new.salary>:old.salary then
dbms_output.put_line(:new.first_name||'工资调高了');
elsif :new.salary<:old.salary then
dbms_output.put_line(:new.first_name||'工资调低了');
else
dbms_output.put_line(:new.first_name||'工资没有调整');
end if;
end tri_emp;
sql developer好像很少有人用,建议你装个pl/sql
我安装plsql试了一下,确实不会报错,谢谢。不过不知道这种触发器用sql developer怎么实现。
我安装plsql试了一下,确实不会报错,谢谢。不过不知道这种触发器用sql developer怎么实现。
我也在用sql developer,没遇到过这种问题,也用你的脚本做了个测试,也正确执行了。
SQL>
SQL> create table employees(salary int, first_name varchar(10));
Table created
SQL> insert into employees values(100,'zhangsan');
1 row inserted
SQL> create or replace trigger tri_emp
2 before update
3 on employees
4 for each row
5 begin
6 if :new.salary>:old.salary then
7 dbms_output.put_line(:new.first_name||'工资调高了');
8 elsif :new.salary<:old.salary then
9 dbms_output.put_line(:new.first_name||'工资调低了');
10 else
11 dbms_output.put_line(:new.first_name||'工资没有调整');
12 end if;
13 end tri_emp;
14 /
Trigger created
SQL> set serverout on;
SQL> update employees set salary = 200;
zhangsan工资调高了
1 row updated
SQL> update employees set salary = 100;
zhangsan工资调低了
1 row updated
SQL> update employees set salary = 100;
zhangsan工资没有调整
1 row updated
SQL> drop table employees purge;
Table droppedSQL>