2009-04-21 5 views

Antwort

3

Sie können möglicherweise den Text analysieren, der von der DBMS_UTILITY.FORMAT_CALL_STACK()-Funktion zurückgegeben wird.

Edit: Ich habe versucht, einige Testpakete zu erstellen. Ich habe eine Prozedur im XX_TESTA-Paket, die eine andere im XX_TESTB-Paket aufruft. Die Prozedur in XX_TESTB druckt einfach den von DBMS_UTILITY.FORMAT_CALL_STACK() zurückgegebenen Text zur Ausgabe aus. Dies ist der resultierende Text:

----- 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

Wahrscheinlich ein besserer Vorschlag verwenden können als Bergwerk. Ich finde $$ PLSQL_UNIT wirklich nützlich, aber ich denke nicht, dass es so bekannt ist, weil es relativ neu ist. – cagcowboy

3

Sie könnten den Namen als Parameter übergeben?

Mit ....

$$PLSQL_UNIT 

Von: 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

Danke für den Link. Es gibt viele interessante Artikel! Hinzugefügt in meinem rss-Leser :-) –

Verwandte Themen