Oracle数据库通过定义TYPE及Member对象来实现日志信息的分级管理
Oracle数据库通过定义TYPE及Member对象来实现日志信息的分级管理
调用路径:
存储过程-》调用函数初始化TYPE里变量-》存储过程调用具体级别的日志操作-》调用TYPES实现体TYPE BOBIES里的具体Member实现体-》调用公用的Member成员存储过程写入syslog表。
代码样例展示:
1、存储过程
- createorreplaceprocedure sp_message_hisorderdata_create(
- p_l_date HsCrmType.LDate%TYPE,
- p_vc_customer hscrmtype.vc50%type) IS
- v_l_date HsCrmType.LDate%Type;
- v_l_currentdate HsCrmType.LDate%Type;
- v_vc_customer hscrmtype.vc50%type;
- v_l_count HsCrmType.LInt%Type;
- v_l_total HsCrmType.LInt%Type;
- v_vc_open_value HsCrmType.VC255%Type;
- v_vc_open_value_temp HsCrmType.VC255%Type;
- v_vc_customer_no HsCrmType.VC20%Type;
- vc_product_no HsCrmType.CKind%Type;
- vc_product_temp HsCrmType.CKind%Type;
- v_vc_prefix HsCrmType.CKind%Type;
- v_vc_temp1 HsCrmType.VC255%Type;
- v_vc_temp2 HsCrmType.VC255%Type;
- v_vc_temp3 HsCrmType.VC255%Type;
- v_vc_temp4 HsCrmType.VC255%TYPE;
- V_L_SPEAK_NO HsCrmType.LInt%Type;
- l_tyLog ty_logManager := ty_logManager('system','003');
- begin
- l_tyLog.up_Enter('sp_message_hisorderdata_create开始');
- v_vc_temp1 := chr(1)||' '||chr(1)||' '||chr(1)||' '||chr(1)||' ';
- v_vc_temp2 := chr(1)||' '||chr(1)||' '||chr(1)||' ';
- v_vc_temp3 := chr(1)||' '||chr(1)||' ';
- v_vc_temp4 := chr(1)||' ';
- --zhoudy 2013-01-30 添加初始化赋值
- v_vc_open_value := '';
- v_l_total := 0;
- V_L_SPEAK_NO := 0;
- v_l_date := nvl(p_l_date,0);
- v_vc_customer := nvl(p_vc_customer,' ');
- if v_l_date = 0 then
- v_l_date := to_number(to_char(SYSDATE-1,'YYYYMMDD'));
- end if;
- FOR r IN (SELECT a.vc_customer_no
- ,a.l_product_no
- ,'3'AS c_sourcetype
- ,a.l_de_begin_date AS l_de_begin_date
- ,a.l_de_end_date AS l_de_end_date
- ,(SELECT WMSYS.WM_CONCAT(b.vc_open_value) FROM hscrm_dbo.orderinfo b
- WHERE b.vc_customer_no=a.vc_customer_no
- AND b.l_product_no=a.l_product_no
- and b.l_product_no < 20000) AS vc_open_value
- ,'1'AS c_processtype
- FROM hscrm_dbo.speakforrelation a
- WHERE--a.l_create_date <= v_l_date
- --a.l_create_date <= 20101026
- --and
- a.l_product_no < 20000
- --and a.l_create_date <= 20101024
- --and (a.vc_customer_no = v_vc_customer or v_vc_customer = ' ')
- --and a.l_product_no=11003
- GROUPBY vc_customer_no,l_product_no,l_de_begin_date,l_de_end_date
- )
- LOOP
- v_vc_prefix := substr(r.vc_customer_no,1,3);
- if v_vc_prefix = 'CRM'then
- v_vc_customer_no := substr(r.vc_customer_no,4);
- v_vc_open_value_temp := r.vc_open_value;
- vc_product_temp := substr(to_char(r.l_product_no),1,1);
- if vc_product_temp = '1'then
- v_l_total := v_l_total + 1;
- vc_product_no := substr(to_char(r.l_product_no),2);
- SELECTCOUNT(*) INTO v_l_count FROM hscrm_dbo.smsserviceparam WHERE vc_smsno = to_char(r.l_product_no);
- CASE
- WHEN v_l_count = 0 THEN
- v_vc_open_value := '';
- WHEN v_l_count = 1 THEN
- v_vc_open_value := REPLACE(r.vc_open_value,v_vc_temp1);
- WHEN v_l_count = 2 THEN
- v_vc_open_value := REPLACE(r.vc_open_value,v_vc_temp2);
- WHEN v_l_count = 3 THEN
- v_vc_open_value := REPLACE(r.vc_open_value,v_vc_temp3);
- WHEN v_l_count = 4 THEN
- v_vc_open_value := REPLACE(r.vc_open_value,v_vc_temp4);
- --zhoudy 20130131
- ELSE
- v_vc_open_value := REPLACE(r.vc_open_value,v_vc_temp4);
- ENDCASE;
- v_vc_open_value := REGEXP_REPLACE(v_vc_open_value,' ');
- v_vc_open_value := REPLACE(v_vc_open_value,',',chr(1));
- --V_L_SPEAK_NO := r.L_SPEAK_NO;
- INSERTINTO THJZX_DZGX_IN_HIS2(KHH,CPBH,DZLY,DZSJ,DQSJ,DZLX,CS,CJRQ)
- VALUES(v_vc_customer_no
- ,vc_product_no
- ,r.c_sourcetype
- ,r.l_de_begin_date
- ,r.l_de_end_date
- ,r.c_processtype
- ,v_vc_open_value
- ,v_l_date);
- end if;
- end if;
- COMMIT;
- END LOOP;
- commit;
- l_tyLog.up_Leave('sp_message_hisorderdata_create处理结束,成功生成数'||v_l_total);
- exception
- when others then
- rollback;
- l_tyLog.up_Error('sp_message_orderdata_create error:'||v_vc_customer_no||':'||V_L_SPEAK_NO||':'||v_l_date||':'||vc_product_no||':'|| v_vc_open_value||':'||SQLCODE);
- end sp_message_hisorderdata_create;
片段解析:
初始化log的定义,其实现在type的内部;
- l_tyLog ty_logManager := ty_logManager('system','003');
调用log具体子过程
- l_tyLog.up_Error('sp_message_orderdata_create error:'||v_vc_customer_no||':'||V_L_SPEAK_NO||':'||v_l_date||':'||vc_product_no||':'|| v_vc_open_value||':'||SQLCODE);
- l_tyLog.up_Leave('sp_message_hisorderdata_create处理结束,成功生成数'||v_l_total);
|
评论暂时关闭