Oracle PL/SQL异常处理

来源:互联网 发布:大数据涉及技术要求 编辑:程序博客网 时间:2024/05/16 07:53

Oracle的exception_init编译指令
当在Oracle的PL/SQL中用raise_application_error的方式抛出异常(自定义),进行异常处理的时候需要将抛出的错误号和自定义的异常关联起来,否则程序无法根据异常名称引用具有特定错误号的异常;
这个时候可以使用编译指令将错误名称和Oracle的错误编号关联起来,就可以编写错误处理程序了;
使用如下:

DECLARE    exception_name EXCEPTION;    PRAGMA EXCEPTION_INIT(exception_name,error_code);

下面给一个实例:

DECLARE    v_num NUMBER := &sv_num;        v_result NUMBER;    e_num_error EXCEPTION;--声明异常    PRAGMA EXCEPTION_INIT(e_num_error,-20292);--将自定义的异常和特定的错误号关联起来BEGIN    IF v_num = 0 THEN        --抛出特定错误号的异常        RAISE_APPLICATION_ERROR(-20292,'The input number is zero');    END IF;    v_result := 10 / v_num;    DBMS_OUTPUT.put_line('result is :' || v_result);    EXCEPTION         WHEN e_num_error THEN            DBMS_OUTPUT.put_line('error : ' || sqlcode || ' ' || sqlerrm);END;

运行该脚本:
当输入0的时候输出为:
error : -20292 ORA-20292: The input number is zero;

1 0