oracle 笔记3 捕获异常

捕获异常
预定义异常:
1 no_data_found:没有找到数据
2 TOO_MANY_ROWS: 找到太多数据
3 INVALID_CURSOR: 失效的游标
4 ZERO_DIVIDE :除数为零
5 DUP_VAL_ON_INDEX :唯一索引中插入了重复值
declare
  name  employee.e_name%type;
begin
select e_name into name from employee where e_id=123;
exception
when no_data_found then
dbms_output.put_line('no result!');
end;
非预定义异常:
在数据库中没有定义异常名称的异常。这中异常通常都是数据库的错误,这些错误只有错误编号、而没有错误的异常名称,所以不能直接捕捉到。为了捕捉到非预定义的异常,必须先创建一个异常名称,然后将错误编号和刚刚创建的异常名称关联起来,这样就可以在异常处理部分通过定义的异常名称来捕捉这个异常了。
declare
e_emp_remaining  EXCEPTION;
PRAGMA EXCEPTION_INIT(e_emp_remaining,-2293);
begin
exception
when e_emp_remaining then
...........
end;
用户自定义异常:
RAISE命令

相关函数:
1 SQLCODE
2 SQLERRM
declare
v_errorcode number;
v_msg varchar2(255);
name  employee.e_name%type;
begin
select e_name into name from employee where e_id=123;
exception
when no_data_found then
v_errorcode:=sqlcode;
v_msg:=sqlerrm;
dbms_output.put_line(v_errorcode||'no result!'||v_msg);
end; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值