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

来源:互联网 发布:ps3验证游戏数据 编辑:程序博客网 时间:2024/06/16 01:22

异常处理简介

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
原创粉丝点击