• 异常处理


    数据库异常处理
    预定义 ( Predefined )错误
    ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('数据库中没有编码为'||v_empno||'的员工');
    WHEN TOO_MANY_ROWS THEN
    DBMS_OUTPUT.PUT_LINE('程序运行错误!请使用游标');
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLCODE||’---‘||SQLERRM);
    SQLCode:数据库操作的返回码,其中0--成功;-1--失败;100--没有检索到数据。
    SQLERRM是一则函数。oracle sqlerrm函数 sqlerrm函数返回指定错误代码的错误信息。
    非预定义 ( Predefined )错误
    即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。
    DECLARE
    v_deptno dept.deptno%TYPE :=&deptno;
    deptno_remaining EXCEPTION;
    PRAGMA EXCEPTION_INIT(deptno_remaining, -2292);
    /* -2292 是违反一致性约束的错误代码 */
    BEGIN
    DELETE FROM dept WHERE deptno=v_deptno;
    EXCEPTION
    WHEN deptno_remaining THEN
    DBMS_OUTPUT.PUT_LINE('违反数据完整性约束!');
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLCODE||’---‘||SQLERRM);
    END;
    PRAGMA EXCEPTION_INIT的用法
    如果要处理未命名的内部异常,必须使用OTHERS异常处理器或PRAGMA EXCEPTION_INIT 。PRAGMA由编译器控制,或者是对于编译器的注释。PRAGMA在编译时处理,而不是在运行时处理。EXCEPTION_INIT告诉编译器将异常名与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。

    DECLARE
    v_empno emp.empno%TYPE :=&empno;
    no_result EXCEPTION;
    BEGIN
    UPDATE emp SET sal=sal+100 WHERE empno=v_empno;
    IF SQL%NOTFOUND THEN
    RAISE no_result;
    END IF;
    EXCEPTION
    WHEN no_result THEN
    DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!');
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLCODE||’---‘||SQLERRM);
    END;
    如果在声明部分引起异常情况,即在声明部分出现错误,那么该错误就能影响到其它的块
    例:DECLARE
    Abc number(3):=’abc’;
    其它语句
    BEGIN
    其它语句
    EXCEPTION
    WHEN OTHERS THEN
    其它语句
    END;
    由于Abc number(3)=’abc’; 出错,尽管在EXCEPTION中说明了WHEN OTHERS THEN语句,但WHEN OTHERS THEN也不会被执行。

  • 相关阅读:
    深度学习工具
    rcnn学习(六):imdb.py学习
    r-cnn学习(六):RPN及AnchorTargetLayer学习
    r-cnn学习(五):SmoothL1LossLayer论文与代码的结合理解
    liunx学习(一):linux下目录操作大全
    Caffe学习系列(17): blob
    r-cnn学习(四):train_faster_rcnn_alt_opt.py源码学习
    faster r-cnn 在CPU配置下训练自己的数据
    R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记(转)
    如何学习caffe
  • 原文地址:https://www.cnblogs.com/fy02223y/p/7241818.html
Copyright © 2020-2023  润新知