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.