Oracle
 sql >> Database >  >> RDS >> Oracle

Come scoprire il numero di riga, il nome della procedura in PL/SQL in caso di errore

Mi sono imbattuto in questo schema dopo molte ricerche, sbattere la testa e digrignare i denti:

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;

Il DBMS_UTILITY.FORMAT_ERROR_STACK la funzione sembra fornire il codice di errore e il messaggio e DBMS_UTILITY.FORMAT_ERROR_BACKTRACE sembra fornire una traccia dello stack onesta e buona, completa di numeri di riga e nomi di procedure memorizzate almeno in Oracle 10g.

Non sono sicuro che queste funzioni siano disponibili in Oracle 9i. Non sono riuscito a trovare molte informazioni su questo genere di cose nemmeno per Oracle 10g, quindi ho pensato di pubblicare almeno questa risposta poiché 9i è piuttosto vecchio (e quindi è 10g per quella materia).