假設我有2個包:A和B.是否可以知道從哪個程序包調用過程?
級封裝,我稱之爲包B的程序
在packcage B的過程中,纔可能知道的規程,從被稱爲包A?
非常感謝您提供這些信息。這非常有啓發性。
我很欣賞。
假設我有2個包:A和B.是否可以知道從哪個程序包調用過程?
級封裝,我稱之爲包B的程序
在packcage B的過程中,纔可能知道的規程,從被稱爲包A?
非常感謝您提供這些信息。這非常有啓發性。
我很欣賞。
可以使用who_called_me
過程調用從Oracle提供的包OWA_UTIL
http://download.oracle.com/docs/cd/B25221_04/web.1013/b25598/psutil.htm#i1006497
您可能能夠解析由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
您可以通過作爲參數傳遞名稱?
使用....
$$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
感謝您的鏈接。有很多有趣的文章!添加到我的rss閱讀器中:-) – 2009-04-21 19:36:22
可能是一個更好的建議比我的。我發現$$ PLSQL_UNIT確實很有用,但我不認爲它是衆所周知的,因爲它比較新。 – cagcowboy 2009-04-21 19:21:58