假设我有2个包:A和B.
在包A中,我调用包B中的过程。
在包装箱B的程序中,是否可以知道从包装A调用了程序?
非常感谢您提供这些信息。这非常有启发性。
我很感激。
答案 0 :(得分:4)
您可以使用Oracle提供的包who_called_me
OWA_UTIL
的过程
http://download.oracle.com/docs/cd/B25221_04/web.1013/b25598/psutil.htm#i1006497
答案 1 :(得分: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
答案 2 :(得分:3)
您可以将名称作为参数传递吗?
使用....
$$PLSQL_UNIT
来自:http://awads.net/wp/2006/08/03/heres-a-quick-way-to-get-the-line-number-in-plsql
EDDIE@XE> CREATE OR REPLACE PACKAGE my_pkg
2 IS
3 PROCEDURE my_proc;
4 END;
5 /
Package created.
EDDIE@XE> 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.
EDDIE@XE> exec my_pkg.my_proc;
Line number: 6
Unit: MY_PKG