2009-04-21 119 views

回答

3

您可能能夠解析由DBMS_UTILITY.FORMAT_CALL_STACK()函數返回的文本。

編輯:我試着創建一些測試包。我有一個XX_TESTA包中的過程調用XX_TESTB包中的另一個過程。 XX_TESTB中的過程僅打印由DBMS_UTILITY.FORMAT_CALL_STACK()返回的文本以輸出。這是由此產生的文本:

----- PL/SQL Call Stack ----- 
    object  line object 
    handle number name 
416fe0e68   5 package body APPS.XX_TESTB 
415182f10   5 package body APPS.XX_TESTA 
416e9b448   3 anonymous block 
+0

可能是一個更好的建議比我的。我發現$$ PLSQL_UNIT確實很有用,但我不認爲它是衆所周知的,因爲它比較新。 – cagcowboy 2009-04-21 19:21:58

3

您可以通過作爲參數傳遞名稱?

使用....

$$PLSQL_UNIT 

來源:http://awads.net/wp/2006/08/03/heres-a-quick-way-to-get-the-line-number-in-plsql

[email protected]> CREATE OR REPLACE PACKAGE my_pkg 
    2 IS 
    3  PROCEDURE my_proc; 
    4 END; 
    5/

Package created. 

[email protected]> CREATE OR REPLACE PACKAGE BODY my_pkg 
    2 IS 
    3  PROCEDURE my_proc 
    4  IS 
    5  BEGIN 
    6  DBMS_OUTPUT.put_line ('Line number: ' || $$plsql_line); 
    7  DBMS_OUTPUT.put_line ( 'Unit: ' 
    8        || $$plsql_unit 
    9       ); 
10  END; 
11 END; 
12/

Package body created. 

[email protected]> exec my_pkg.my_proc; 
Line number: 6 
Unit: MY_PKG 
+0

感謝您的鏈接。有很多有趣的文章!添加到我的rss閱讀器中:-) – 2009-04-21 19:36:22

相關問題