一.异常
在oracle中的异常分为3种异常,第一种是预定义异常,这种异常是oracle已经定义好名称的异常,也就是异常名称和异常编码是对应好的。例如:NO_DATE_FOUND 错误编码为+100。第二种就是非预定义异常:这种异常就是有oracle已经给定了错误编码和错误描述,所以不会被触发。当声明一个异常名字并且关联到异常编码,当有异常时就能自动触发。第三种就是自定义异常,需要自己决定异常触发的条件,并且显示触发即用代码调用异常。
--1.非预定义异常
declare
var_id number(4);
test_exception EXCEPTION;
pragma exception_init(test_exception,-00001);
begin
var_id:=11;
update emp e set e.empno = var_id where e.empno = 10;
exception
when test_exception then
dbms_output.put_line(SQLERRM);
rollback;
end;
--2.自定义异常
declare
var_id number(4);
test_exception exception;
pragma exception_init(test_exception,-2000);
begin
select e.empno into var_id from emp e where e.mgr = 7902;
if var_id > 100 then
raise test_exception;
end if;
dbms_output.put_line('===========');
exception
when test_exception then
dbms_output.put_line('大于10');
when TOO_MANY_ROWS then
dbms_output.put_line('too many');
end;