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

Sådan finder du linjenummer, procedurenavn i PL/SQL i tilfælde af fejl

Jeg er stødt på dette mønster efter megen research, hovedbank og tænderskæren:

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;

DBMS_UTILITY.FORMAT_ERROR_STACK funktionen ser ud til at give fejlkoden og meddelelsen og DBMS_UTILITY.FORMAT_ERROR_BACKTRACE synes at give et ærligt til godhed stackspor, komplet med linjenumre og lagrede procedurenavne i mindst Oracle 10g.

Jeg er ikke sikker på, om disse funktioner er tilgængelige i Oracle 9i. Jeg kunne ikke finde meget information om denne slags ting, selv for Oracle 10g, så jeg tænkte, at jeg i det mindste ville sende dette svar, da 9i er ret gammel (og så den 10g for den sags skyld).



  1. Isolationsniveauer i oracle

  2. mysql group_concat bringer ikke hele data

  3. Kan jeg køre SSIS-pakker med SQL Server Express eller Web- eller Workgroup-udgaver?

  4. MYSQL vælg de sidste 3 rækker, sorter efter ASC