1

AとBの2つのパッケージがあるとします。

パッケージAでは、パッケージBのプロシージャを呼び出します。

パッケージBの手順で、手順がパッケージAから呼び出されたことを知ることはできますか?


これらの情報をありがとうございました。とても参考になりました。

感謝します。

4

3 に答える 3

4

who_called_meOracle提供のパッケージから呼び出されるプロシージャを使用できますOWA_UTIL

http://download.oracle.com/docs/cd/B25221_04/web.1013/b25598/psutil.htm#i1006497

于 2009-04-22T01:31:37.657 に答える
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
于 2009-04-21T19:16:34.280 に答える
3

関数によって返されたテキストを解析できる場合があり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
于 2009-04-21T18:41:22.010 に答える