--异常
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;