sql >> Databáze >  >> RDS >> Oracle

Zpracování výjimek v Proceduře s vnořenými funkcemi v pl/sql

RAISE_APPLICATION_ERROR postup má třetí parametr, který řídí, zda výjimka nahradí aktuální zásobník výjimek (výchozí chování) nebo jej přidá.

Pokud to tedy předáte TRUE zobrazí obě zprávy; ve volání z vaší procedury:

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

vám dává výstup:

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

Chcete-li zobrazit pouze zprávy a ne další informace o zásobníku, musíte se zásobníkem manipulovat. Tento článek dotýká se, jak používat format_error_backtrace získat informace, které vás zajímají, ale bohužel odkaz na BT balíček je mrtvý. Některé ze stejného důvodu je zahrnuta zde . V podstatě musíte analyzovat řetězec výjimky do řádků a zobrazit pouze ty, které začínají ORA-20% , myslím.

Buďte však opatrní, abyste nepřišli o informace, které mohou být skutečně životně důležité. Zejména bych vám doporučil zachytit pouze konkrétní chyby, které hledáte, nikoli OTHERS - nechte to být, abyste se mohli vypořádat s neočekávanými chybami a neskrývali něco důležitého.




  1. Výkon Oracle DBMS_LOB.INSTR a CONTAINS

  2. mysql resultset je vždy null

  3. Nasazení LocalDB na klientském PC

  4. V PL/SQL vezměte tabulku jako parametr, vyfiltrujte ji a vraťte ji