O
RAISE_APPLICATION_ERROR
procedimento
tem um terceiro parâmetro que controla se a exceção substitui a pilha de exceção atual (o comportamento padrão) ou adiciona a ela. Então, se você passar
TRUE
ele mostrará ambas as mensagens; na chamada do seu procedimento:...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
TRUE);
END;
dá a saída:
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
Para mostrar apenas as mensagens e não as outras informações da pilha, você precisaria manipular a pilha. Este artigo aborda como usar
format_error_backtrace
para extrair as informações de seu interesse, mas infelizmente o link para o BT
pacote está morto. Alguns dos mesmos motivos está coberto aqui
. Essencialmente, você precisa analisar a string de exceção em linhas e exibir apenas aquelas que começam com ORA-20%
, Eu penso. Mas tome cuidado para não perder informações que podem realmente ser vitais. Em particular, sugiro que você apenas capture os erros específicos que está procurando, não
OUTROS
- deixe isso de lado para que você possa lidar com erros inesperados e não esconda algo importante.