Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Obsługa wyjątków w procedurze z zagnieżdżonymi funkcjami w pl/sql

RAISE_APPLICATION_ERROR procedura ma trzeci parametr, który kontroluje, czy wyjątek zastępuje bieżący stos wyjątków (zachowanie domyślne), czy go dodaje.

Więc jeśli zdasz to TRUE pokaże obie wiadomości; w rozmowie z Twojej procedury:

...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
  TRUE);
END;

daje wynik:

BEGIN
*
ERROR at line 1:
ORA-20101: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 13
ORA-20102: Circle Code is wrong or not available
ORA-06512: at line 2

Aby pokazać tylko wiadomości, a nie inne informacje stosu, musisz manipulować stosem. Ten artykuł opisuje, jak używać format_error_backtrace aby wyodrębnić interesujące Cię informacje, ale niestety link do BT pakiet nie żyje. Niektóre z tych samych podstaw omówiono tutaj . Zasadniczo musisz przeanalizować ciąg wyjątków w wiersze i wyświetlić tylko te, które zaczynają się od ORA-20% , myślę.

Ale uważaj na utratę informacji, które mogą być naprawdę ważne. W szczególności sugeruję, abyś wyłapywał tylko określone błędy, których szukasz, a nie INNE - zostaw to w spokoju, aby poradzić sobie z nieoczekiwanymi błędami i nie ukrywać niczego ważnego.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź Ciąg znaków jest poprawną datą, czy nie

  2. Dostęp do połączonych elementów

  3. Dzielenie ciągów w PL/SQL

  4. Data Oracle Między zapytaniem

  5. Wyeksportować bazę danych Oracle do pliku sql?