Oracle存储过程跟踪错误的方法

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 ;
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 ;

  

--存过过程实现主体
EXCEPTION
   WHEN  OTHERS  THEN
     PROC_SAVE_ERRMSG(biz_code /*此变量用于查找错误记录标记*/ ,DBMS_UTILITY.format_error_backtrace,sqlcode,SQLERRM);
END ;
原文地址:https://www.cnblogs.com/dll102/p/15667359.html