ORACLE--Function异常处理(EXCEPTION)
存储过程在抛出异常的时候可以通过下面的代码,去获取异常并把异常UPDATE到某个字段内,方便在检查数据时,查看数据抛出的异常。
WHEN OTHERS THEN--ROLLBACK;--获取异常信息V_ERRCODE:= SQLCODE ;V_ERRMSG:= SUBSTR(SQLERRM , 1, 150);--同步存储过程出现错误 2 -- 同步失败UPDATE PRPDRATIONCLAUSEKINDTEMPSET STATUS = '2',ERRMSG = V_ERRMSG,ERRCODE = V_ERRCODEWHERE RATIONCODE = CCIC_RATION_DETAIL.RATIONCODEAND CLAUSECODE = CCIC_RATION_DETAIL.CLAUSECODEAND KINDCODE = CCIC_RATION_DETAIL.KINDCODE;COMMIT;
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://blog.csdn.net/jojo52013145/article/details/6585833