zoukankan      html  css  js  c++  java
  • 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异常错误处理

  • 相关阅读:
    win10删除了应用商店重新安装,应用商店报错不能联网下载
    bps,Bps,pps,fps单位换算
    mongodb查不出数据
    ps切图
    ppt常用设置
    视频录制
    excel设置下拉
    小程序开发
    手把手从0搭建hexo博客
    两种方式实现登录跳转新窗体
  • 原文地址:https://www.cnblogs.com/hehaiyang/p/4748530.html
Copyright © 2011-2022 走看看