zoukankan      html  css  js  c++  java
  • oracle中的预定异常和自定义异常

    预定异常

      oracle中的预定异常情况大约有24个,对于这种异常情况的处理,无须再程序中定义,可用oracle自动引发,常见的预定异常如下

    异常 说明
    ACCESS_INTO_NULL 在未初始化对象时出现
    CASE_NOT_FOUND CASE语句中的选项与用户输入的数据不匹配时出现
    COLLECTION_IS_NULL 给尚未初始化的表或数组赋值时出现
    CURSOR_ALREADY_OPEN 在用户试图重新打开已经打开的游标时出现。在重新打开游标前必须先将其关闭
    DUP_VAL_ON_INDEX 在用户试图将重复的值存储在使用唯一索引的数据库列中时出现
    INVALID_CURSOR 在执行非法游标运算( 如打开一个尚未打开的游标)时出现
    INVALID_NUMBER 在将字符串转换为数字时出现
    LOGIN_DENTED 在输入的用户名或密码无效时出现
    NO_ DATA_FOUND 在表中不存在请求的行时出现。此外,当程序引用已经删除的元素时,也会引发NO_ DATA FOUND异常
    STORAGE_ERROR 在内存损坏或PLSQL耗尽内存时出现
    TOO_MANY_RowS 在执行SELECT INTO语句后返回多行时出现
    VALUE_ERROR 在产生大小限制错误时出现,例如, 变量中的列值超出变量的大小
    ZERO_ DIVIDE 以零作为除数时出现

    处理自定义异常

      在程序执行过程中,出现编程人员认为的非正常情况,对于这种情况的处理,需要用户在程序中定义,然后显示的将其在程序中引发

    对于这类异常情况的处理,步骤如下

    在pl/sql块的定义异常情况

      <异常情况> exception;

    抛出异常情况

      raise  <异常情况>

    预定异常

    --异常
    declare
       v_comm emp.comm%type;
       e_comm_is_null exception;           --定义异常类型变量
    begin
       select comm into v_comm from emp where empno=7788;
       if v_comm is null then
          raise e_comm_is_null;
       end if;
    exception
       when no_data_found then
         dbms_output.put_line('雇员不存在!错误为:'||SQLcode||SQLErrm);
       when e_comm_is_null then
         dbms_output.put_line('该雇员无补助');
    end;

    结果:

    用户自定义异常

    --自定义异常
    declare
       v_comm emp.comm%type;
    begin
       select comm into v_comm from emp where empno=7788;
       if v_comm is null then
          raise_application_error('-20010','该雇员无补助');
       end if;
    end;

    结果:

     注意自定义异常的编号范围是 -20999-20000之间的负整数,消息长度最长为2048字节

  • 相关阅读:
    Python+Selenium自动化篇-3-设置浏览器大小、刷新页面、前进和后退
    Python+Selenium自动化篇-2-定位页面元素的八种方法
    Python+Selenium自动化篇-1-安装模块和浏览器驱动操作方法
    02_Python_数据容器(列表、元祖、集合、字典)
    01_Python_基础知识(变量、字符串、条件控制)
    orm单表操作
    模版导入与继承
    django模板层
    orm视图函数层
    orm路由层
  • 原文地址:https://www.cnblogs.com/hfx123/p/9942513.html
Copyright © 2011-2022 走看看