Chyba ORA-00942 bude obecně chybou při kompilaci. Oracle musí přeložit názvy tabulek v době kompilace. Obslužné rutiny výjimek zachytí chyby za běhu, nikoli za kompilace.
Pokud jste použili dynamické SQL, můžete odložit překlad názvů na běhové prostředí, kdy můžete zachytit výjimku, tj.
SQL> ed
Wrote file afiedt.buf
1 declare
2 no_such_table exception;
3 pragma exception_init( no_such_table, -942 );
4 l_cnt integer;
5 begin
6 execute immediate 'select count(*) from emps' into l_cnt;
7 exception
8 when no_such_table
9 then
10 dbms_output.put_line( 'No such table' );
11* end;
SQL> /
No such table
PL/SQL procedure successfully completed.
Ale to obecně není rozumný způsob psaní uložených procedur. Vaše procedury by měly vědět, jaké tabulky skutečně existují, a syntaktické chyby by měly být identifikovány a vyřešeny během vývoje, nikoli za běhu.