当存储过程引发异常时,可以使用以下代码获取异常并将异常更新到特定字段,这在检查数据时方便检查数据抛出异常.

WHEN OTHERS THEN

--ROLLBACK;

--获取异常信息

V_ERRCODE:= SQLCODE ;

V_ERRMSG:= SUBSTR(SQLERRM , 1, 150);

--同步存储过程出现错误 2 -- 同步失败

UPDATE PRPDRATIONCLAUSEKINDTEMP

SET STATUS = '2',ERRMSG = V_ERRMSG,ERRCODE = V_ERRCODE

WHERE RATIONCODE = CCIC_RATION_DETAIL.RATIONCODE

AND CLAUSECODE = CCIC_RATION_DETAIL.CLAUSECODE

AND KINDCODE = CCIC_RATION_DETAIL.KINDCODE;

COMMIT;

ORACLE存储过程中的常见异常

报价

异常oracle错误sqlcode值条件

no_data_found ora-01403 +100 select into语句不返回符合条件的记录

too_many_rows ora-01422 -1422 select into语句具有多个满足返回条件的记录

dup_val_on_index ora-00001 -1对于表中的一列,该列已被限制为唯一索引,程序尝试存储两个重复的值

value_error ora-06502 -6502转换字符类型,拦截或长度限制时,会发生此异常. 例如,如果将一个字符分配给变量oracle 过程 异常处理,并且变量声明的长度比该字符短,则将引发此异常.

storage_error ora-06500 -6500内存溢出

zero_divide ora-01476 -1476除数为零

case_not_found ora-06592 -6530对于select case语句,没有匹配条件,并且同时没有else语句可以捕获其他条件

cursor_already_open ora-06511 -6511该程序试图打开一个已经打开的游标

timeout_on_resource ora-00051 -51系统正在等待资源oracle 过程 异常处理,时间已结束

今天同步数据时丢了

ORA-04062: timestamp of procedure "CCICINS.P_DODUMP_CCICINS" has been changed

错误原因: 当两个存储过程相互调用时,一个被调用的存储过程碰巧只是被编译了,但是调用者的存储过程尚未被编译. 此时的数据将引发此异常.

解决方案: 重新编译调用方的存储过程,然后重新同步数据以解决该问题.

引发异常的三种方法:

引发异常的三种方法

1、通过PL/SQL运行时引擎

2、使用RAISE语句

3、调用RAISE_APPLICATION_ERROR存储过程

//抛出异常方式讲解

1、当或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。

2、异常也可以通过RAISE语句抛出,如:RAISE exception_name;

3、RAISE_APPLICATION_ERROR内建函数用于抛出一个异常并给异常赋予一个错误号以及错误信息

(自定义异常的缺省错误号是+1,缺省信息是User_Defined_Exception)

个人感觉前两个经常会用到,第三个好像不太常用。

某些内容来自:

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-168997-1.html

oracle如何获取异常,ORACLE-函数异常处理(EXCEPTION)相关推荐

  1. oracle如何获取异常,Oracle专题13之异常错误处理

    异常:是程序在正常执行过程中发生的未预料的事件. b.什么是异常处理? 异常处理是为了提高程序的健壮性,使用异常处理部分可以有效地解决程序正常执行过程中可能出现的各种错误,使得程序正常运行. c.异常 ...

  2. oracle存储过程获取异常信息码和异常信息

    oracle存储过程,可以通过sqlcode 获取异常编码.通过sqlerrm获取异常信息. 例子: create or replace procedure write2blob(p_id in nu ...

  3. oracle 值过多异常,oracle ORA-00913: 值过多

    --oracle中查看表是否被锁 查看表是否被锁 SELECT /*+ rule*/ a.sid, b.owner, object_name, object_type FROM v$lock a, a ...

  4. oracle 查询空值异常,Oracle中的NULL

    这篇文档讨论一下NULL和索引的关系. 前面几篇文章讨论了NULL的数据类型和NULL的运算特点.这里打算简单描述NULL和索引的关系. 如果说NULL类型已经比较容易出错了,那么索引问题就让NULL ...

  5. oracle自定义长度异常,Oracle 自定义wmsys.wm_concat 避免长度限制

    Oracle自定义wmsys.wm_concat避免长度限制网上搜索到这段类似代码但是长度过程还是不行,经过我的修改,亲测可以. CREATEORREPLACETYPEZH_CONCAT_IM AUT ...

  6. oracle插入日期异常,Oracle插入日期数据常见的2个问题和解决方法

    1.无效的月份问题 最近在往数据库中插入时间时,Oracle报"无效的月份问题",具体SQL如下:INSERT INTO TS_COUNT ( ID,CNAME, STARTTIM ...

  7. oracle怎么获取凌晨,oracle怎么设置定时任务(job)?比如每天凌晨0点执行。多谢...

    SQL codehttp://blog.csdn.net/wyzxg/archive/2007/09/12/1782952.aspx --------------------------------- ...

  8. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  9. Oracle PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR

    抛出异常 Oracle有三种类型的异常错误: 1. 预定义(Predefined)异常 ORACLE预定义的异常情况大约有24个.对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发. ...

最新文章

  1. 基于python的证件照_20行代码教你用python给证件照换底色的方法示例
  2. 北大华为鹏城联合首次提出视觉 Transformer 后量化算法!
  3. iOS 数据计算带小数点导致数据不精确问题
  4. 398. Random Pick Index
  5. javaScript tips —— z-index 对事件机制的影响
  6. centos7搭建SVN并配置使用http方式访问SVN服务器
  7. 关于电脑的十大误区,原来是这样!
  8. Airflow 中文文档:插件
  9. 直接选择排序算法时间 / 空间复杂度
  10. 数据库时间相减_sql中两个时间类型相减得到的值
  11. 文献翻译——基于关联规则挖掘识别的鸡源大肠杆菌共有多重耐药模式(上)
  12. 全系统进程隐藏win7winn10win11器风铃进程隐藏器软件
  13. 小木虫 高光谱遥感图像处理_高光谱图像变化检测
  14. 推流地址 java_如何通过代码生成推流地址和播放地址?
  15. Python绘制三维立体图详解与绘图填充
  16. HBase hmaster无法正常启动,日志报错Operation category READ is not supported in state standby.hdfs ha hbase配置修改
  17. 与传统媒体相比新媒体传播所具备的特点与优势!
  18. Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数
  19. unity 设置 异形按钮
  20. Java操作Neo4J就是这么简单,#yyds盘点#

热门文章

  1. 信创产业已成现象级新风口,快来加入争做“弄潮儿”
  2. 毕昇 JDK:为啥是ARM 上超好用的 JDK
  3. 关于GO语言,这篇文章讲的很明白
  4. 实践案例丨基于Raft协议的分布式数据库系统应用
  5. 利用深度学习识别滑动验证码缺口位置
  6. Python小数据保存,有多少中分类?不妨看看他们的类比与推荐方案...
  7. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作
  8. 开发者的福利,报名即可领取代金券,赢运动手环
  9. 野生前端的数据结构基础练习(7)——二叉树
  10. java mvc实例_Java Web实现的基本MVC实例分析