PL/SQL--异常处理

PL/SQL–异常处理

PLSQL 中的例外一般有两种:
1 、Oracle 内部错误抛出的例外:这又分为预定义例外(有错误号+ 常量定义) 和 非预定义例外(仅有错误号,无常量定义)
2 、程序员显式的抛出的例外

基本语法

EXCEPTION
WHEN exception1 [OR exception2 . . .] THEN
    --处理语句。。
[WHEN exception3 [OR exception4 . . .] THEN
    --处理语句。。
[WHEN OTHERS THEN --其他异常,省事
    --处理语句。。
]

others 的处理: Others 中的异常一般是我们为考虑到的异常,但发生这种情况的时候,我们还是希望了解当时发生了什么?Oracle 提供了两个内置函数 SQLCODE 和 SQLERRM 分别用来返回错误号和错误描述;

exception 
    when no_data_found then
      dbms_output.put_line('SQLCODE ->' || SQLCODE || '     SQLERRM ->' || SQLERRM);

处理非预定义的Oracle 错误:此类错误属于Oracle 错误,有编号,但无错误名称定义,使用时需要先声明,并进行错误初始化:

DECLARE
  --声明异常
  e_emps_remaining EXCEPTION;
  --将错误编号与异常名称联系起来
  PRAGMA EXCEPTION_INIT(e_emps_remaining, -2292);
Begin  

在使用时不用手动抛出异常,和使用预定义异常一样;

处理用户自定义的异常
步骤:
1.声明异常
2.抛出异常
3.处理异常

declare 
  e_not_positive exception;--声明异常
  v_value number := -1;
begin 
  if v_value < 0 then 
    raise e_not_positive;--抛出异常
  end if;

exception
  when e_not_positive then--处理异常
    dbms_output.put_line('不是正数');
end;

RAISE_APPLICATION_ERROR() 函数:对于用户自定义的业务错误,如果觉得先定义再使用很麻烦,那么也可以简单的使用raise_application_error() 来简化处理。它可以无需预先定义错误,而在需要抛出错误的; 地方直接使用此函数抛出例外,例外可以包含用户自定义的错误吗和错误描述

--似乎就是弹出一个框而已
RAISE_APPLICATION_ERROR (-20201,'Manager is not a valid employee.');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值