Oracle
 sql >> Base de données >  >> RDS >> Oracle

Gestion des erreurs Oracle

Une erreur ORA-00942 sera généralement une erreur de compilation. Oracle doit résoudre le(s) nom(s) des tables au moment de la compilation. Les gestionnaires d'exceptions intercepteront les erreurs au moment de l'exécution, pas au moment de la compilation.

Si vous avez utilisé SQL dynamique, vous pouvez différer la résolution des noms au moment de l'exécution, auquel cas vous pouvez intercepter l'exception, c'est-à-dire

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.

Mais ce n'est pas une façon sensée, en général, d'écrire des procédures stockées. Vos procédures doivent savoir quelles tables existent réellement et les erreurs de syntaxe doivent être identifiées et résolues au cours du développement, et non au moment de l'exécution.