Błąd ORA-00942 będzie zazwyczaj błędem czasu kompilacji. Oracle musi rozwiązać nazwy tabel w czasie kompilacji. Programy obsługi wyjątków będą przechwytywać błędy w czasie wykonywania, a nie w czasie kompilacji.
Jeśli użyłeś dynamicznego SQL, możesz odłożyć rozwiązanie nazw do środowiska wykonawczego, w którym możesz przechwycić wyjątek, 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 generalnie nie jest to rozsądny sposób pisania procedur składowanych. Twoje procedury powinny wiedzieć, jakie tabele faktycznie istnieją, a błędy składni powinny być identyfikowane i rozwiązywane podczas tworzenia, a nie w czasie wykonywania.