Oracle笔记 十一、PL/SQL函数和触发器
--创建函数
create or replace function add_sal(sSal number)
return number
is
begin
if (sSal > 5000) then
return sSal + 51;
elsif (sSal > 3000) then
return sSal + 111;
else
return sSal + 222;
end if;
end;
select sal, add_sal(sal) from emp;
--触发器
create table deptLog(
uName varchar2(20),
action varchar2(20),
dTime date
);
--创建触发器
--for each row 可以触发多条,当你的语言影响多少条记录就会触发多少次
create or replace trigger trig_dept2
after insert or delete or update on dept2/* for each row*/
begin
if inserting then
insert into deptLog values(user, 'insert', sysdate);
elsif updating then
insert into deptLog values(user, 'update', sysdate);
elsif deleting then
insert into deptLog values(user, 'delete', sysdate);
end if;
end;
select * from dept2;
select * from deptLog;
insert into dept2 values(55, 'SOFTWARE', 'cic');
update dept2 set loc = 'go' where deptno in(30);
delete dept2 where deptno = 55;
--触发器
create or replace trigger trig_emp
after update on dept for each row
begin
update emp set emp.deptno =: new.deptno where emp.deptno = :old.deptno;
end;
update dept set deptno = 11 where deptno = 10;
select * from emp;
---语句级触发器
create or replace trigger trg_ins_dept2
before insert
on dept2
begin
if user not in('SCOTT') then
raise_application_error(-20001, '只有SCOTT才能修改该表!');
end if;
end;
禁用、启用触发器
alter trigger tgr_Name disable | enable;
alter table tableName disable all trigger | enable all trigger;
出处:
blog:http://blog.csdn.net/IBM_hoojo
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权所有,转载请注明出处 本文出自:
![分享道](http://s.shareto.com.cn/btn/lg-share-cn.gif)
赞
收藏
关注
评论