Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So finden Sie im Fehlerfall die Zeilennummer und den Prozedurnamen in PL/SQL heraus

Ich bin nach viel Recherche, Headbanging und Zähneknirschen auf dieses Muster gestoßen:

CREATE OR REPLACE PACKAGE BODY my_schema.package_name
IS

  PROCEDURE foo
  IS
  BEGIN
    -- Call stored procedures/functions that throw unhandled exceptions
  EXCEPTION
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('ERROR! - '
        || DBMS_UTILITY.FORMAT_ERROR_STACK
        || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
  END foo;

END;

Der DBMS_UTILITY.FORMAT_ERROR_STACK Die Funktion scheint den Fehlercode und die Meldung sowie DBMS_UTILITY.FORMAT_ERROR_BACKTRACE anzugeben scheint einen ehrlichen Stack-Trace zu geben, komplett mit Zeilennummern und Namen gespeicherter Prozeduren zumindest in Oracle 10g.

Ich bin mir nicht sicher, ob diese Funktionen in Oracle 9i verfügbar sind. Ich konnte selbst für Oracle 10g nicht viele Informationen zu solchen Dingen finden, also dachte ich, ich würde zumindest diese Antwort posten, da 9i ziemlich alt ist (und daher 10g für diese Angelegenheit).