关于在PLSQL中实现DEBUG调试功能的方法
前言 具体实现办法: 举个例子,如果我的调试消息设置是:调试级别3,调试显示3的信息。 CUX:程序调试方式 CUX:程序调试文件 2 PLSQL里面如何使用调试的方法: CREATE OR REPLACE PACKAGE BODY APPS.XYG_ALBND_PACK_PKG
AS
--===============================================================
-- Debug 处理
--===============================================================
--P_DEBUG_LEVEL:该调试信息的级别
PROCEDURE DEBUGLOG (P_DEBUG_LEVEL IN NUMBER,P_DEBUG_MSG IN VARCHAR2) IS BEGIN XYG_ALD_DEBUG_PKG.DEBUGLOG(' XYG_ALBND_PACK_PKG ',P_DEBUG_LEVEL,P_DEBUG_MSG);
END DEBUGLOG;
--简化版本,默认该消息的是level=1的
PROCEDURE DEBUGLOG1 (P_DEBUG_MSG IN VARCHAR2) IS BEGIN XYG_ALD_DEBUG_PKG.DEBUGLOG(' XYG_ALBND_PACK_PKG ',1,P_DEBUG_MSG);
END DEBUGLOG1;
….
接着,在需要显示调试消息的地方,直接调用这个函数即可:
DEBUGLOG(1,'GENERATE_XXXXXXXXXXXXX(+)'); 或者:DEBUGLOG1('GENERATE_XXXXXXXXXXXXX(+)');
需要注意的是,DEBUGLOG的第一个参数是该消息的显示级别。换句话说,就是你希望这个消息在什么级别显示它! 3 程序如何查看调试的结果: ------------------------------
---1 普通在Toad的output调试样例:
DECLARE
L_RETCODE NUMBER;
L_ERRBUF VARCHAR2(4000);
BEGIN FND_PROFILE.PUT('XYG_ALD_DEBUG_LEVEL',1);
FND_PROFILE.PUT('XYG_ALD_DEBUG_TYPE','DBMS_OUTPUT');
XYG_ALBND_PACK_PKG.AUTO_CREATE_PACK(
'PO_HEADERS_ALL',2579287,SYSDATE,5954,'NORMAL',l_retcode,l_errbuf
);
DBMS_OUTPUT.PUT_LINE(L_RETCODE||'-'||L_ERRBUF);
END;
------------------------------
---2 调试结果文件输出样例:
DECLARE
L_RETCODE NUMBER;
L_ERRBUF VARCHAR2(4000);
BEGIN FND_PROFILE.PUT('XYG_ALD_DEBUG_LEVEL',2);
FND_PROFILE.PUT('XYG_ALD_DEBUG_TYPE','FILE_DEBUGLOG');
FND_PROFILE.PUT('XYG_ALD_DEBUG_FILE','/oracle/vis/apps/apps_st/appl/attchment/12.0.0/BATCH_UPLOAD_TEMP/SAMT_TEST001.log');
XYG_ALBND_PACK_PKG.AUTO_CREATE_PACK(
'PO_HEADERS_ALL',l_errbuf
);
DBMS_OUTPUT.PUT_LINE(L_RETCODE||'-'||L_ERRBUF);
END;
--查看文件的路径
SELECT FND_PROFILE.VALUE('XYG_ALD_DEBUG_FILE') FROM DUAL ------------------------------ --3 如果用数据输出的 DECLARE L_RETCODE NUMBER;
L_ERRBUF VARCHAR2(4000);
BEGIN FND_PROFILE.PUT('XYG_ALD_DEBUG_LEVEL','DATA_DEBUGLOG');
XYG_ALBND_PACK_PKG.AUTO_CREATE_PACK(
'PO_HEADERS_ALL',l_errbuf
);
DBMS_OUTPUT.PUT_LINE(L_RETCODE||'-'||L_ERRBUF);
END;
---查看调试信息:
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff3') debug_time,session_id,module||'[---]'||message_text from fnd_log_messages where timestamp > sysdate-1 and session_id=userenv('SESSIONID') order by LOG_SEQUENCE;
完工!就是这么的简单,让您写的PLSQL就拥有了完整的而且有非常好扩展性的调试功能! 文档下载以及源代码下载的链接: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |