sql >> Databasteknik >  >> RDS >> Oracle

Hur man tar reda på radnummer, procedurnamn i PL/SQL vid fel

Jag har stött på det här mönstret efter mycket forskning, huvudbank och tandgnissling:

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 verkar ge felkoden och meddelandet, och DBMS_UTILITY.FORMAT_ERROR_BACKTRACE verkar ge en ärlig till godhet stack-spårning, komplett med radnummer och lagrade procedurnamn i Oracle 10g åtminstone.

Jag är inte säker på om dessa funktioner är tillgängliga i Oracle 9i. Jag kunde inte hitta mycket information om den här typen av saker ens för Oracle 10g, så jag tänkte att jag åtminstone skulle posta det här svaret eftersom 9i är ganska gammal (och så den 10g för den delen).



  1. GeoServer kommer inte att skriva till min PostgreSQL-uppdateringsbara vy

  2. Psycopg2 infoga python-ordbok i postgres-databasen

  3. Oracle - Vad händer när du uppdaterar en "REFRESH FORCE ON DEMAND"-vy med DBMS_MVIEW.REFRESH

  4. Hur man installerar SQL Server på Red Hat 8