admin 管理员组文章数量: 888297
oracle function exception,ORACLE
ORACLE--Function异常处理(EXCEPTION)
存储过程在抛出异常的时候可以通过下面的代码,去获取异常并把异常UPDATE到某个字段内,方便在检查数据时,查看数据抛出的异常。
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存储过程常见异常
引用
exception oracle error sqlcode value condition
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 在转换字符类型,截取或长度受限时,会发生该异常,如一个字符分配给一个变量,而该变量声明的长度比该字符短,就会引发该异常
storage_error ora-06500 -6500 内存溢出
zero_divide ora-01476 -1476 除数为零
case_not_found ora-06592 -6530 对于选择case语句,没有与之相匹配的条件,同时,也没有else语句捕获其他的条件
cursor_already_open ora-06511 -6511 程序试图打开一个已经打开的游标
timeout_on_resource ora-00051 -51 系统在等待某一资源,时间超时今天在同步数据时抛出
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)
个人感觉前两个经常会用到,第三个好像不太常用。
部分内容来自:
本文标签: oracle function exception Oracle
版权声明:本文标题:oracle function exception,ORACLE 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1693580790h230462.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论