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 ;

 

 

 

 

posted @ 2021-12-09 14:56  一只竹节虫  阅读(404)  评论(0编辑  收藏  举报