sql >> Databáze >  >> RDS >> Oracle

Jak zjistit číslo řádku, název procedury v PL/SQL v případě chyby

Narazil jsem na tento vzorec po mnoha výzkumech, bouchání hlavou a skřípání zubů:

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 Zdá se, že funkce poskytuje chybový kód a zprávu a DBMS_UTILITY.FORMAT_ERROR_BACKTRACE Zdá se, že poskytuje poctivé trasování zásobníku, doplněné čísly řádků a názvy uložených procedur alespoň v Oracle 10g.

Nejsem si jistý, zda jsou tyto funkce dostupné v Oracle 9i. Nemohl jsem najít mnoho informací o tomto druhu ani pro Oracle 10g, tak jsem si řekl, že alespoň zveřejním tuto odpověď, protože 9i je docela starý (a tak je to 10g).



  1. SQL Query to Count() více tabulek

  2. MYSQL_ROOT_PASSWORD je nastaveno, ale přístup odepřen uživateli 'root'@'localhost' (pomocí hesla:YES) v kontejneru dockeru

  3. Learning Oracle, Nastavení boolean na základě data

  4. Vyberte první a poslední časové razítko, kde je ID uživatele jedinečné