您的位置:首页 > 数据库 > Oracle

Oracle笔记 十一、PL/SQL函数和触发器

2015-10-12 22:18 603 查看
--创建函数

createorreplacefunctionadd_sal(sSalnumber)

returnnumber

is

begin

if(sSal>5000)then

returnsSal+51;

elsif(sSal>3000)then

returnsSal+111;

else

returnsSal+222;

endif;

end;


selectsal,add_sal(sal)fromemp;



--触发器

createtabledeptLog(

uNamevarchar2(20),

actionvarchar2(20),

dTimedate

);


--创建触发器

--foreachrow可以触发多条,当你的语言影响多少条记录就会触发多少次

createorreplacetriggertrig_dept2

afterinsertordeleteorupdateondept2/*foreachrow*/

begin

ifinsertingthen

insertintodeptLogvalues(user,'insert',sysdate);

elsifupdatingthen

insertintodeptLogvalues(user,'update',sysdate);

elsifdeletingthen

insertintodeptLogvalues(user,'delete',sysdate);

endif;

end;


select*fromdept2;

select*fromdeptLog;

insertintodept2values(55,'SOFTWARE','cic');

updatedept2setloc='go'wheredeptnoin(30);

deletedept2wheredeptno=55;


--触发器

createorreplacetriggertrig_emp

afterupdateondeptforeachrow

begin

updateempsetemp.deptno=:new.deptnowhereemp.deptno=:old.deptno;

end;


updatedeptsetdeptno=11wheredeptno=10;

select*fromemp;


---语句级触发器

createorreplacetriggertrg_ins_dept2

beforeinsert

ondept2

begin

ifusernotin('SCOTT')then

raise_application_error(-20001,'只有SCOTT才能修改该表!');

endif;

end;


禁用、启用触发器

altertriggertgr_Namedisable|enable;

altertabletableNamedisablealltrigger|enablealltrigger;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: