公共日志过程

--*********************************************************************************
--功能说明:
--    日志过程
--参数说明:
--    p_log_id      日志ID
--    p_proc_name   过程名  
--    p_err_line    异常行数
--    p_err_code    错误代码 异常时获取错误代码 正常时 S开始 E结束 sqlerrm 具体异常信息
--    p_err_msg     错误信息
--    p_user        创建人  
--创建说明:创建者  创建日期
--修改历史:修改者  修改日期  修改原因(简要说明)
--          暂无    暂无      暂无
--*********************************************************************************
procedure proc_log(p_log_id      varchar2,
									 p_proc_name	 varchar2,
								   p_err_line    varchar2,
								   p_err_code    varchar2,
								   p_err_msg     varchar2,
								   p_user        varchar2
                  )
is
  pragma autonomous_transaction; 
  v_err_msg     varchar2(4000);
begin
	
	v_err_msg := p_err_msg;
	
  if p_err_code != 'S' then  --S 表示程序开始 不用计算耗时
  
    select to_char((sysdate - created_date) * 24 * 60, 'fm9999999990.00') into v_err_msg from fxq_log where log_id = p_log_id;
	  v_err_msg := substrb('耗时:'||v_err_msg||'分, '||p_err_msg, 1, 4000);
  
  end if;
  
	merge into fxq_log a
	using (select count(1) cnt from fxq_log where log_id = p_log_id) b
	   on (b.cnt > 0)
	 when matched then
	 
		 update set err_line       = p_err_line     ,
		 						err_code       = p_err_code     ,
		 						err_msg        = v_err_msg      ,
		 						updated_by     = nvl(p_user, user) ,
		            updated_date   = sysdate 
		  where log_id = p_log_id
  
	 when not matched then 
			 
		 insert (log_id			       ,
			 			 proc_name         ,
			 			 err_line          ,
			 			 err_code          ,
			 			 err_msg           ,
			 			 created_by        ,
			 			 created_date      
		 )values(                 
		    		 nvl(p_log_id, sys_guid()) ,
		    		 p_proc_name       ,
		    		 p_err_line        ,
		    		 p_err_code        ,
		    		 v_err_msg         ,
		    		 nvl(p_user, user) ,
		    		 sysdate         
		 );
  commit;
end proc_log;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值