sql >> Database >  >> RDS >> Oracle

Oracle-foutafhandeling

Een ORA-00942-fout is over het algemeen een fout tijdens het compileren. Oracle moet de naam(namen) van de tabellen tijdens het compileren oplossen. Exception handlers vangen fouten op tijdens runtime, niet tijdens compileren.

Als je dynamische SQL hebt gebruikt, kun je het omzetten van namen naar runtime uitstellen, waarna je de uitzondering kunt opvangen, d.w.z.

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.

Maar dat is in het algemeen geen verstandige manier om opgeslagen procedures te schrijven. Uw procedures moeten weten welke tabellen er werkelijk bestaan ​​en syntaxisfouten moeten worden geïdentificeerd en opgelost tijdens de ontwikkeling, niet tijdens runtime.



  1. Geef het begin van de maand terug in SQLite

  2. MySQL PI() Functie – Retourneer de waarde van π (pi)

  3. Oracle PL/SQL:UTL_FILE.FCOPY Voorbeeld

  4. Top 115 SQL-interviewvragen die u in 2022 moet voorbereiden