sql >> Base de Datos >  >> RDS >> Oracle

Manejo de errores de Oracle

Un error ORA-00942 generalmente será un error de tiempo de compilación. Oracle tiene que resolver los nombres de las tablas en tiempo de compilación. Los controladores de excepciones detectarán errores en tiempo de ejecución, no en tiempo de compilación.

Si usó SQL dinámico, puede posponer la resolución de nombres al tiempo de ejecución, momento en el que puede capturar la excepción, es decir,

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.

Pero esa no es una forma sensata, en general, de escribir procedimientos almacenados. Sus procedimientos deben saber qué tablas existen realmente y los errores de sintaxis deben identificarse y resolverse durante el desarrollo, no en tiempo de ejecución.