• 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字节

  • 相关阅读:
    运动第六课时
    java获取json数组格式中的值
    高性能网站建设进阶指南解说 新风宇宙
    检查素数的正则表达式 新风宇宙
    A*算法(游戏中寻路算法)特别奉献php实现源码? 新风宇宙
    几个值得放在common中的函数 新风宇宙
    以x%的概率执行某段代码 新风宇宙
    战场每步操作记录的存放方法 新风宇宙
    我的个人简历(最近离职找工作) 新风宇宙
    关于腾讯截取字符串问题 新风宇宙
  • 原文地址:https://www.cnblogs.com/hfx123/p/9942513.html
Copyright © 2020-2023  润新知