zoukankan      html  css  js  c++  java
  • ORACLE中异常处理

    oracle中异常主要分为三类,一类是系统预定义的,就是错误为ORA-xxxxx的那种。

    还有就是用户使用RAISE抛出来的异常,这种异常一般是在存储过程或函数内容就自行处理了。

    还有就是PARAGMA EXCEPTION_INIT()。

    自定义异常:

    DECLARE

    excep1 EXCEPTION;

    BEGIN

      ...

      INSERT...

      INSERT INTO A(a,b) VALUES (a1,b1);

      RAISE excep1; --人为抛出异常

      ROLLBACK;

      UPDATE ...

      ...

    EXCEPTION

      /*内部处理。这里必须讨论下这里ROLLBACK能否执行的问题。从insert语句报错后,控制直接被转到了这里,所以ROLLBACK以及后面的UPDATE无效,第一个INSERT 在错误处理完后被直接提交了。*/

      WHEN excep1 THEN

      ...  --对抛出的异常的处理

         WHEN OTHERS THEN

      ...

    END

    附:如果没有这里对错误的处理,而是直接将错误抛出,将得到:ORA-06510: PL/SQL: unhandled user-defined exception;那么想自定义这个错误内容怎么办?这就需要使用RAISE_APPLICATION_ERROR了

    raise_application_error(error_number, message[, {TRUE | FALSE}]);

    error_number介于 -20000 .. -20999之间。

    例如:RAISE_APPLICATION_ERROR(-20101,'请确认模板中月份是否按照按格式yyyy-mm填写!');

    如果不在存储过程或函数内部处理这个过程,而是直接抛出,将得到:ORA-20101: 请确认模板中月份是否按照按格式yyyy-mm填写!

    详细请参照官方文档!

  • 相关阅读:
    CF G. Running Competition (NTT, 思维)
    ABC 177 F
    牛客练习赛68 D.牛牛的粉丝 (期望DP,矩阵快速幂)
    CF E
    HDU 6761 Minimum Index (字符串--Lyndon分解)
    D. GameGame (思维、博弈)
    P2533 最小圆覆盖
    P4049 [JSOI2007]合金
    P2510 [HAOI2008]下落的圆盘
    P3205 [HNOI2010]合唱队
  • 原文地址:https://www.cnblogs.com/SEEKTHINKING/p/2541734.html
Copyright © 2011-2022 走看看