Kesalahan ORA-00942 umumnya akan menjadi kesalahan waktu kompilasi. Oracle harus menyelesaikan nama tabel pada waktu kompilasi. Penangan pengecualian akan menjebak kesalahan pada waktu proses, bukan waktu kompilasi.
Jika Anda menggunakan SQL dinamis, Anda dapat menunda resolusi nama ke runtime di mana Anda dapat menangkap pengecualian, yaitu
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.
Tapi itu bukan cara yang masuk akal, secara umum, untuk menulis prosedur tersimpan. Prosedur Anda harus mengetahui tabel apa yang sebenarnya ada dan kesalahan sintaks harus diidentifikasi dan diselesaikan selama pengembangan, bukan saat runtime.