sql >> Databasteknik >  >> RDS >> Oracle

Oracle felhantering

Ett ORA-00942-fel kommer i allmänhet att vara ett kompileringstidsfel. Oracle måste lösa namnet/namnen på tabellerna vid kompileringstillfället. Undantagshanterare kommer att fånga fel vid körning, inte kompileringstid.

Om du använde dynamisk SQL kan du skjuta upp upplösningen av namn till körning och då kan du fånga undantaget, 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 är generellt sett inte ett vettigt sätt att skriva lagrade procedurer. Dina procedurer bör veta vilka tabeller som faktiskt finns och syntaxfel bör identifieras och lösas under utveckling, inte vid körning.



  1. Hur man stänger en markör ordentligt i Android

  2. Architecting for Security:En guide för MySQL

  3. Skapa en Schema Bound View i SQL Server

  4. Hur man ansluter till flera SQL-servrar med ett klick (registrerad servergrupp) - SQL Server / TSQL självstudie del 5