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;
相关文章推荐
- Oracle笔记 十、PL/SQL存储过程
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 八、PL/SQL跳转/判断/循环语句块
- Oracle笔记 六、PL/SQL简单语句块、变量定义
- Oracle笔记 七、PL/SQL 异常处理
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle笔记 四、增删改、事务
- Oracle笔记 三、function 、select
- Oracle笔记 二、常用dba命令行
- Oracle 死锁的检测查询及处理
- Oracle笔记 一、oracle的安装、sqlplus的使用
- Java 联系Oracle 数据库
- oracle之分组函数、数字函数、字符函数、转换函数和日期函数
- Hibernate在oracle中ID增长的两种方式
- oracle各种sql报错汇总
- Oracle RAC 11g 安装测试问题小结(还未测试成功)
- oracle回顾(一)
- oracle回顾(一)
- oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO
- 老师oracle讲义第五天