• PL/SQL之异常


      异常分为预定义异常和用户自定义异常。预定义异常是由系统定义的异常。由于他们已在STANDARD包中预定义了,因此,这些预定义异常可以直接在程序中使用,而不用在预定义部分声明。而用户自定义异常则需要在定义部分声明后才能在可执行部分使用。用户自定义异常对应的错误不一定是Oracle错误,例如,它可能是一个数据错误。

    1、预定义异常

      

      

      

    2、异常的声明

    用户自定义异常必须先在定义部分声明,然后再使用。
    
    语法:
    EXCEPTION exception
    
    EXCEPTION 用来指定声明的是异常
    exception 是一个自定义异常名
    
    DECLARE
        e_TooManyAuthors EXCEPTION;
        
    异常是一个错误状态,而不是一个数据项,所以异常不能出现在赋值语句或SQL语句中。但异常的作用域与定义部分其他变量的作用域相同。如果一个用户自定义异常被传递到作用域外,则不能再通过原来的名字引用它。为了解决这个问题,我们可以再包中声明异常,这个异常就可以在任何块中使用,使用时在异常前加包名前缀即可。
    
    CREATE OR REPLACE PACKAGE Globals
        /*这个包中声明的对象可在任意块中引用。注意这个包没有包体*/
        e_UserDefinedException EXCEPTION;
        ...
    END Globals;

      

    3、异常的产生

      

      

      

    4、异常处理

    异常处理部分包含着对异常的处理语句。当一个异常相应的错误发生到这个异常产生时,异常处理语句被执行。
        
    语法:
    EXCEPTION 
        WHEN exception_name THEN
            Sequence_of_statements1;
        WHEN exception_name THEN
            Sequence_of_statements2;
        WHEN OTHERS THEN
            Sequence_of_statements3;
    END;    
    
    一个异常处理语句可以处理多个异常。只要在WHEN子句中加由OR分隔的多个异常名即可。
    
    如果块中的异常没有被处理,则该块会带着未处理的异常返回调用它的程序,这会导致调用它的程序出错。如果在存储过程中出现异常,则存储过程的OUT参数将得不到返回值。最好在块的最外层使用OTHERS子句处理块中所有未处理的异常。

      

      

      

      

    推荐文章:整理oracle异常错误处理

  • 相关阅读:
    vue项目中关闭eslint
    关于ios的safari下,页面底部弹出登陆遮罩层,呼出软键盘时 问题解决
    1.wap端绑定电话号码&发送短信
    node.js的安装与配置
    2020年Web前端开发工作容易找吗?
    JS干货分享—-this指向
    2020年学习前端开发应该看哪些书?
    laravel migrate增加、修改、删除字段
    echarts饼状统计图、柱状统计图
    PHP伪静态
  • 原文地址:https://www.cnblogs.com/hehaiyang/p/4748530.html
Copyright © 2020-2023  润新知