1.首先创建用于保存错误信息的表
CREATE TABLE TBL_PROC_ERRMSG ( BIZ_CODE VARCHAR2(50), ERR_LINE VARCHAR2(10), ERR_CODE VARCHAR2(10), MSG VARCHAR2(200), CRT_TM DATE DEFAULT SYSDATE );
2.创建保存错误信息的存过
CREATE OR REPLACE PROCEDURE PROC_SAVE_ERRMSG(BIZCODE IN VARCHAR2, ERRORLINE IN VARCHAR2, ERRORCODE IN VARCHAR2, MSG IN VARCHAR2) IS /*必须要使用自治事务,否则commit会影响调用程序事务*/ PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO TBL_PROC_ERRMSG (BIZ_CODE, ERR_LINE, ERR_CODE, MSG) VALUES (BIZCODE, ERRORLINE, ERRORCODE, MSG); COMMIT ; END ;
3.使用示例
--存过过程实现主体 EXCEPTION WHEN OTHERS THEN PROC_SAVE_ERRMSG(biz_code /*此变量用于查找错误记录标记*/ ,DBMS_UTILITY.format_error_backtrace,sqlcode,SQLERRM); END ;