Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да разберете номер на ред, име на процедура в PL/SQL в случай на грешка

Попаднах на този модел след много изследвания, блъскане по главата и скърцане със зъби:

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 изглежда, че функцията дава кода и съобщението за грешка и DBMS_UTILITY.FORMAT_ERROR_BACKTRACE изглежда дава честно проследяване на стека, пълно с номера на редове и имена на съхранени процедури поне в Oracle 10g.

Не съм сигурен дали тези функции са налични в Oracle 9i. Не можах да намеря много информация за подобни неща дори за Oracle 10g, така че реших да публикувам поне този отговор, тъй като 9i е доста стар (и затова е 10g).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JPA:java.lang.IllegalArgumentException:Не е обект

  2. Видео:Производителност на колона Oracle 12c IDENTITY на RAC

  3. Разбиране на поведението на функцията remainder() в Oracle

  4. ORACLE/ASP.NET:ORA-2020 - Твърде много връзки към бази данни... на какво се дължи това?

  5. Как мога да намеря основната колона и име на таблица за изглед на Oracle?