Il RAISE_APPLICATION_ERROR
procedura
ha un terzo parametro che controlla se l'eccezione sostituisce lo stack di eccezioni corrente (il comportamento predefinito) o se lo aggiunge.
Quindi se lo passi TRUE
mostrerà entrambi i messaggi; nella chiamata dalla tua procedura:
...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
TRUE);
END;
ti dà l'output:
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
Per mostrare solo i messaggi e non le altre informazioni sullo stack è necessario manipolare lo stack. Questo articolo
tocca come utilizzare format_error_backtrace
per estrarre le informazioni che ti interessano, ma purtroppo il link al BT
il pacco è morto. Alcuni dello stesso terreno è trattato qui
. In sostanza devi analizzare la stringa di eccezione in righe e visualizzare solo quelle che iniziano con ORA-20%
, penso.
Ma fai attenzione a non perdere informazioni che potrebbero essere effettivamente vitali. In particolare ti suggerirei di intercettare solo gli errori specifici che stai cercando, non OTHERS
- lascia perdere così puoi gestire errori imprevisti e non nascondere qualcosa di importante.