El RAISE_APPLICATION_ERROR
procedimiento
tiene un tercer parámetro que controla si la excepción reemplaza la pila de excepciones actual (el comportamiento predeterminado) o se agrega a ella.
Entonces, si lo pasas TRUE
mostrará ambos mensajes; en la llamada de su procedimiento:
...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
TRUE);
END;
te da la salida:
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 solo los mensajes y no la otra información de la pila, necesitaría manipular la pila. Este artículo
toca cómo usar format_error_backtrace
para extraer la información que le interesa, pero desafortunadamente el enlace a BT
el paquete está muerto. Algo del mismo terreno está cubierto aquí
. Básicamente, debe analizar la cadena de excepción en líneas y mostrar solo aquellas que comienzan con ORA-20%
, creo.
Pero tenga cuidado con la pérdida de información que en realidad podría ser vital. En particular, le sugiero que atrape solo los errores específicos que está buscando, no OTHERS
- déjalo así para que puedas lidiar con errores inesperados y no ocultar algo importante.