Oracle异常之自定义异常

自定义异常:

如果想在某个特定事件发生时向应用程序的用于发出一些警告信息.而事件本身不会抛出Oracle内部异常,这个异常属于应用程序的特定异常.那么就需要自定义异常.

用于定义的异常错误是通过使用raise语句来触发.当引发一个异常错误时,控制就转向到exception块异常错误部分,执行错误处理代码.

 

自定义异常处理步骤:

1.在pl/sql块的声明部分定义异常情况:

<异常情况> exception

2.raise <异常情况>

3.在pl/sql块的异常处理部分对异常情况做出相应的处理.

 

实例:


declare
  v_empno emp.empno%type := &empno;
  --1.声明异常
  e_no_result exception;
begin
  update emp set sal = sal + 100 where empno = v_empno;
  if sql%notfound then
    --2.raise手工触发异常
    raise e_no_result;
  else
    commit;
  end if;
  
  exception
    --3.对异常做出处理
    when e_no_result then
      dbms_output.put_line('数据更新失败');
    when others then
      dbms_output.put_line('其他错误');
end;

当输入员工编号为 1234时,是没有这个员工的,更新操作失败.进入自定义异常处理部分.

结果为:

 

sql代码解读:

SQL%NOTFOUND 是一个布尔值。与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true。否则返回false。这样的语句在实际应用中,是非常有用的。例如要update一行数据时,如果没有找到,就可以作相应操作。

 

SQL%FOUND 的用法与sql%notfound用法相反,也是与最近的sql语句发生交互,如果影响行数大于0条,则为true

否则为false。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值