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;