存储过程记录异常日志信息

该博客介绍了Oracle数据库中创建一个用于记录存储过程错误信息的表`SP_SO_SO_PROC_ERR_LOG`,包括表结构、字段注释和索引。同时,定义了两个存储过程:`P_SO_RECORD_PROC_ERR_LOG`用于记录错误信息,`P_INSERT_HANDLE_RESULT_INFO`在异常时调用前者记录错误详情。这些机制有助于故障排查和系统维护。
摘要由CSDN通过智能技术生成


-- Create table
create table SP_SO_SO_PROC_ERR_LOG
(
  log_id      NUMBER not null,
  module_name VARCHAR2(200),
  proc_name   VARCHAR2(4000),
  err_time    DATE,
  sql_code    VARCHAR2(50),
  sql_errm    VARCHAR2(500),
  err_content VARCHAR2(4000)
);
-- Add comments to the table 
comment on table SP_SO_SO_PROC_ERR_LOG
  is 'XX业务存储过程错误信息记录表';
-- Add comments to the columns 
comment on column SP_SO_SO_PROC_ERR_LOG.log_id
  is '主键';
comment on column SP_SO_SO_PROC_ERR_LOG.module_name
  is '模块名称';
comment on column SP_SO_SO_PROC_ERR_LOG.proc_name
  is '存储过程名称';
comment on column SP_SO_SO_PROC_ERR_LOG.err_time
  is '报错时间';
comment on column SP_SO_SO_PROC_ERR_LOG.sql_code
  is 'SQLCODE';
comment on column SP_SO_SO_PROC_ERR_LOG.sql_errm
  is 'SQLERRM';
comment on column SP_SO_SO_PROC_ERR_LOG.err_content
  is '报错的具体行';
-- Create/Recreate indexes 
create index IDX_SO_SO_PROC_NAME on SP_SO_SO_PROC_ERR_LOG (PROC_NAME);
-- Create/Recreate primary, unique and foreign key constraints 
alter table SP_SO_SO_PROC_ERR_LOG
  add constraint PK_SP_SO_PROC_ERRLOG_ID primary key (LOG_ID);

-- Create sequence 
create sequence SEQ_SO_RECORD_PROC_ERR
minvalue 1
maxvalue 9999999999999999999999999999;

CALL P_SO_RECORD_PROC_ERR_LOG()
SELECT * FROM SP_SO_SO_PROC_ERR_LOG


CREATE OR REPLACE PROCEDURE P_SO_RECORD_PROC_ERR_LOG(module_name varchar2,
                proc_name   varchar2,
                v_SQLCODE   varchar2,
                v_SQLERRM   varchar2,
                v_err_line  varchar2) is
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  insert into SP_SO_SO_PROC_ERR_LOG
    (log_id,
     module_name,
     proc_name,
     err_time,
     sql_code,
     sql_errm,
     err_content)
  values
    (SEQ_SO_RECORD_PROC_ERR.nextval,
     module_name,
     proc_name,
     sysdate,
     v_SQLCODE,
     v_SQLERRM,
     v_err_line);
  commit;
END P_SO_RECORD_PROC_ERR_LOG;

CREATE OR REPLACE PROCEDURE P_INSERT_HANDLE_RESULT_INFO AS
BEGIN
exception
  when others then
    P_SO_RECORD_PROC_ERR_LOG('XX',
                        'P_INSERT_HANDLE_RESULT_INFO',
                        SQLCODE,
                        SQLERRM,
                        substr(dbms_utility.format_error_backtrace, 1, 600));


END P_INSERT_HANDLE_RESULT_INFO;

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值