AとBの2つのパッケージがあるとします。
パッケージAでは、パッケージBのプロシージャを呼び出します。
パッケージBの手順で、手順がパッケージAから呼び出されたことを知ることはできますか?
これらの情報をありがとうございました。とても参考になりました。
感謝します。
who_called_me
Oracle提供のパッケージから呼び出されるプロシージャを使用できますOWA_UTIL
http://download.oracle.com/docs/cd/B25221_04/web.1013/b25598/psutil.htm#i1006497
名前をパラメーターとして渡すことができますか?
使用して....
$$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
関数によって返されたテキストを解析できる場合がありDBMS_UTILITY.FORMAT_CALL_STACK()
ます。
編集:いくつかのテストパッケージを作成してみました。XX_TESTA パッケージのプロシージャーが、XX_TESTB パッケージの別のプロシージャーを呼び出しています。XX_TESTB のプロシージャは、 によって返されたテキストDBMS_UTILITY.FORMAT_CALL_STACK()
を output に出力するだけです。結果のテキストは次のとおりです。
----- 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