Грешка ORA-00942 обикновено ще бъде грешка във времето за компилиране. Oracle трябва да разреши имената на таблиците по време на компилиране. Манипулаторите на изключения ще улавят грешки по време на изпълнение, а не по време на компилиране.
Ако сте използвали динамичен SQL, можете да отложите разделянето на имената за времето на изпълнение, в който момент можете да хванете изключението, т.е.
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.
Но като цяло това не е разумен начин за писане на съхранени процедури. Вашите процедури трябва да знаят какви таблици действително съществуват и синтактичните грешки трябва да бъдат идентифицирани и разрешени по време на разработката, а не по време на изпълнение.