ORACLE数据库存储过程记录错误日志

             目前主程序的大部分存储过程都是使用ZL_ErrorCenter来处理程序异常,但是ZL_ErrorCenter的主要功能是用于对ZLHIS主程序的部分错误的异常进行友好的界面提示,并且对于异常的种类处理较少,对于未处理的异常提示反而不够详细。

       在业务交互平台等三方接口的运行和调试过程中,虽然本身业务交互平台有日志记录,但是查询和定位问题并不是很方便,因此考虑自定义错误日志处理过程来处理。

处理过程及脚本:

   1)日志表

-- Create table
create table zlcd_错误日志
(
  程序名称 varchar2(500),
  错误信息 varchar2(1000),
  入参   varchar2(2000),
  时间   date,
  用户   varchar2(100)
)
;


-- Create/Recreate indexes 
create index ix_错如日志_时间 on zlcd_错误日志 (时间);


---同义词
create public synonym zlcd_错误日志 for zlhis.zlcd_错误日志;
--授权
grant all on zlcd_错误日志 to public;

2)存储过程

CREATE OR REPLACE PROCEDURE 
record_err_log(程序名称_in  varchar2,
                错误信息_in   varchar2,
                入参_in   varchar2
              ) is
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  insert into zlcd_错误日志
    (程序名称,
     错误信息,
     入参,
     时间,
     用户
     )
  values
    (程序名称_in,
     错误信息_in,
     入参_in,
     sysdate,
     user);
  commit;
END record_err_log;

---同义词
create public synonym record_err_log for zlhis.record_err_log;
--授权
grant execute on record_err_log to public;

3)使用示例

create or replace procedure yuchen_testerro as
  
  n_count number:=0;
  begin
     select 病人id into n_count from 病人信息 where 姓名='张三' or 姓名='李四';
  exception
     When Others Then
----记录日志
       record_err_log('yuchen_testerro',dbms_utility.format_error_backtrace||'**'||SQLCODE||'**'||SQLERRM,'');
--抛出异常
  Raise_application_error(-20999,dbms_utility.format_error_backtrace||'**'||SQLCODE||'**'||SQLERRM);
    
    end yuchen_testerro;

4)效果图

查询日志表如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂狼的小蝴蝶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值