`
teachertina
  • 浏览: 12512 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

oracle复习体系五--exception,trigger

阅读更多

--异常

declare

v_ename varchar2(50);

begin

select ename into v_ename from emp;

exception

when too_many_row then

v_name='too_many_row exception';

end;

 

--自定义异常

declare

v_excep exception;

begin

update set ename='tina' where empno=10000;

if sql%notfound then --如果没有更新数据

raise v_excep --throw exception

end if;

exception

when v_excep then

dbms_output.put_line('.............');

end;

 

 

 

--trigger

create table temps (id number(5),desc varchar2(200));

 

--simple

create or replace trigger t_emp

before insert or update of ename --在插入和更新ename字段的时候触发触发器

on emp --数据对象

for each row --行级触发器 在一次操作表的语句中,每操作成功一行就会触发一次;

--不写的话,表示是表级触发器,则无论操作多少行,都只触发一次

begin

insert into temps vlaus(:old.empno,:old.ename);

end;

 

 

--when()

create or replace trigger t_emp

before insert or update of ename

on emp

for each row

when(old.empno<>0001) --满足该条件才会执行触发器

begin

insert into temps vlaus(:old.empno,:old.ename);

end;

 

 

--INSERTING,UPDATING

create or replace trigger t_emp

before insert or update of ename

on emp

for each row

when(old.empno<>0001)

begin

if INSERTING then --根据当前操作分别作处理 (插入操作)

insert into temps vlaus(:old.empno,:old.ename);

elsif UPDATING then (修改操作)

update temps set desc =:new.ename where id=:old.empno;

end if;

end;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics