Oracle PL/SQL开发基础(第二十九弹:异常处理简介)

异常处理简介

Oracle中的错误可以分为如下两大类:
- 编译时错误:程序在编写过程中出现的错误。PL/SQL引擎在进行编译时会发现这些错误并报告给用户,此时程序还没有完全运行。
- 运行时错误:程序在运行过程中因为各种各样的原因产生的运行时错误。由于这类错误优势难以预料,因此需要异常处理机制来进行处理。

异常处理语法

基本的异常处理结构的PL/SQL包含3个部分:
- 在定义区,定义异常。如果使用预定义异常,则不用再定义区定义异常。
- 在执行区,可以显式地触发异常,也可以有PL/SQL引擎触发异常。
- 只要在执行过程中出现了异常,那么在执行区中后续的语句将立即停止执行,语句执行流程跳转到异常处理区。

看一个典型的异常处理的PL/SQL示例:

DECLARE
   e_duplicate_name     EXCEPTION;                      --定义异常
   v_ename              emp.ename%TYPE;                 --保存姓名的变量
   v_newname            emp.ename%TYPE   := '史密斯';   --新插入的员工名称  
BEGIN   
   BEGIN                                                --在嵌套块中处理异常
   SELECT ename INTO v_ename FROM emp WHERE empno = 7369;
   IF v_ename = v_newname
   THEN
      RAISE e_duplicate_name;                 --如果产生异常,触发e_duplicate_name异常
   END IF;
   EXCEPTION
       WHEN e_duplicate_name  THEN
          v_newname:='刘大夏';
   END;
   --如果没有异常,则执行插入语句
   INSERT INTO emp VALUES (7881, v_newname, '职员', NULL, TRUNC (SYSDATE), 2000, 200, 20);
EXCEPTION                                     --异常处理语句块
   WHEN OTHERS THEN
      DBMS_OUTPUT.put_line('异常编码:'||SQLCODE||' 异常信息:'||SQLERRM);      
END;

再看一个示例:

DECLARE
   e_outerexception   EXCEPTION;  
   e_innerexception   EXCEPTION;     
   e_threeexception   EXCEPTION;                 
BEGIN
   BEGIN
      RAISE e_innerexception;
      RAISE e_outerexception;
      RAISE e_threeexception;                  
   EXCEPTION  
      WHEN  e_innerexception THEN
         RAISE e_outerexception;
      WHEN e_outerexception THEN
         --异常处理代码         
      WHEN OTHERS THEN
         --异常处理代码              
   END;        
EXCEPTION
   WHEN e_outerexception THEN                     
      --异常处理代码   
END;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值