sql >> Database teknologi >  >> RDS >> Oracle

Oracle fejlhåndtering

En ORA-00942-fejl vil generelt være en kompileringstidsfejl. Oracle skal opgøre navnene på tabellerne på kompileringstidspunktet. Undtagelsesbehandlere vil fange fejl under kørsel, ikke kompileringstidspunkt.

Hvis du brugte dynamisk SQL, kan du udskyde opløsningen af ​​navne til runtime, hvorefter du kan fange undtagelsen, dvs.

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.

Men det er generelt ikke en fornuftig måde at skrive lagrede procedurer på. Dine procedurer bør vide, hvilke tabeller der faktisk eksisterer, og syntaksfejl skal identificeres og løses under udvikling, ikke under kørsel.



  1. gemmer python-objekt i postgres-bord med pickle

  2. Sammenligning af Oracle RAC HA-løsning med Galera Cluster til MySQL eller MariaDB

  3. Tilslutning til Heroku Postgres fra Spring Boot

  4. Hvordan indstilles variabel fra en SQL-forespørgsel?