2017-11-29 8 views
1

das Paket PACKTEST Code ist verschlüsselt.Eine Prozedur namens meine Funktion, wie ich den Namen der gespeicherten Prozedur ausdrucken. who_called_me kann nur die Zeilennummer druckenWie bekomme ich den Prozedurnamen

OWA_UTIL.who_called_me(l_owner, l_name, l_lineno, l_type); 
dbms_output.put_line(l_owner || '.' || l_name||' '||l_type||' '||l_lineno); 

SCOTT.PACKTEST PAKET BODY 112

+0

Mögliche Duplikat [Capturing Verpackung/Verfahren/Funktionsname von einem Trigger] (https://stackoverflow.com/questions/14554891 verschlüsselt ist/capturing-package-prozedur-funktion-name-from-a-trigger) –

Antwort

0

Die Behauptung, dass Ihr Paket Code verschlüsselt ist führt mich, wenn Sie an der ‚post‘ kompilierte Version schauen, um zu fragen, von das Paket. Es ist also nicht verschlüsselt, es ist einfach nicht dazu gedacht, von Menschen gelesen zu werden - es ist Maschinencode; Entweder der DIANA oder M-Code. (Siehe 10 oder stack overflow here.) Zu diesem Zeitpunkt sind die Quellcode-Namen nicht mehr vorhanden, sie wurden durch DIANA-Knoten oder interne Adressen ersetzt. Die wer-angerufene-Routine verwendet den Ausführungsstapel, um die tatsächliche Zeilennummer der aufrufenden Routine zu erhalten. Wenn Sie den Namen der internen Routine benötigen, können Sie:

  1. Lesen und analysieren Sie den Paketquellcode.
  2. In Ihrem Paket einen Stapel routinemäßiger Namen (Sammlung) behalten, den Namen beim Eintritt schiebend und es beim Ausgang knallend.

Keine von beiden wäre eine einfache Aufgabe. Viel Glück.

0

Überprüfen Sie einfach die unten für die mir genannt, wenn das Verfahren

SELECT * FROM ALL_DEPENDENCIES WHERE 
NAME='PACKTEST';