• Oracle中异常处理方法


      在写存储过程中,有时候需要返回出错的原因,以方便查看记录。

      Oracle提供了以下异常:

      1.预定义异常:用于处理常见的Oracle错误。

      2.非预定义异常:用于处理预定义异常所不能处理的Oracle错误。

      3.自定义异常:用于处理Oracle错误无关的其它情况。

      异常处理以关键字Exception开始,语法如下:

      EXCEPTION
          WHEN  exception_Name THEN  --exception_Name为异常的名字
             statement1;

       WHEN OTHERS THEN
          statement1;

     常见系统异常参考表:

    命名的系统异常         产生原因 
     access_into_null        未定义对象 
     CASE_NOT_FOUND       CASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时 
     COLLECTION_IS_NULL     集合元素未初始化 
     CURSER_ALREADY_OPEN    游标已经打开 
     DUP_VAL_ON_INDEX       唯一索引对应的列上有重复的值 
     INVALID_CURSOR        在不合法的游标上进行操作 
     INVALID_NUMBER        内嵌的 SQL 语句不能将字符转换为数字 
     NO_DATA_FOUND        使用 select into 未返回行,或应用索引表未初始化的元素时 

      TOO_MANY_ROWS        执行 select into 时,结果集超过一行 
      ZERO_DIVIDE          除数为 0 
      SUBSCRIPT_BEYOND_COUNT  元素下标超过嵌套表或 VARRAY 的最大值 
      SUBSCRIPT_OUTSIDE_LIMIT   使用嵌套表或 VARRAY 时,将下标指定为负数 
      VALUE_ERROR          赋值时,变量长度不足以容纳实际数据 
      LOGIN_DENIED          应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码 
      NOT_LOGGED_ON         PL/SQL 应用程序在没有连接 oralce 数据库的情况下访问数据 
      PROGRAM_ERROR         PL/SQL 内部问题,可能需要重装数据字典& pl./SQL 系统包 
      ROWTYPE_MISMATCH       宿主游标变量与 PL/SQL 游标变量的返回类型不兼容 
      SELF_IS_NULL          使用对象类型时,在 null 对象上调用对象方法 
      STORAGE_ERROR         运行 PL/SQL 时,超出内存空间 
      SYS_INVALID_ID         无效的 ROWID 字符串 
      TIMEOUT_ON_RESOURCE    Oracle 在等待资源时超时 

    示例:

    DECLARE
        e_integrity EXCEPTION;  --1、定义部分
        PRAGMA EXCEPTION_INIT (e_integrity, -2291);  --2、建立关联关系
    BEGIN
        Update  emp Set deptno=  :dno Where  empno= :eno;
    EXCEPTION
        WHEN  e_integrity THEN  --3、捕捉处理
          DBMS_OUTPUT.PUT_LINE(该部门不存在);
    END;


  • 相关阅读:
    redis的发布与订阅机制
    三次握手与四次挥手详解
    super的实例及实现原理
    【node.js】入门篇
    简单理解什么是数据库CDC?(以mysql为例)
    Java小工具类(一)json的K-V转换为Java类属性
    linux系统文件拷贝命令rsync
    linux系统配置常用命令top
    关于ganymed-ssh2版本262和build210的SCPClient类的区别
    阿里巴巴java-数据库开发手册(2020泰山版)
  • 原文地址:https://www.cnblogs.com/ZHF/p/1863632.html
Copyright © 2020-2023  润新知