sql >> Databáze >  >> RDS >> Oracle

Řešení chyb Oracle

Chyba ORA-00942 bude obecně chybou při kompilaci. Oracle musí přeložit názvy tabulek v době kompilace. Obslužné rutiny výjimek zachytí chyby za běhu, nikoli za kompilace.

Pokud jste použili dynamické SQL, můžete odložit překlad názvů na běhové prostředí, kdy můžete zachytit výjimku, tj.

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.

Ale to obecně není rozumný způsob psaní uložených procedur. Vaše procedury by měly vědět, jaké tabulky skutečně existují, a syntaktické chyby by měly být identifikovány a vyřešeny během vývoje, nikoli za běhu.



  1. Jak vložit sloupec na konkrétní pozici v oracle bez vypuštění a opětovného vytvoření tabulky?

  2. Vkládání dat SQL Serveru do Salesforce pomocí kurzoru

  3. Pochopení kontrolních omezení v PostgreSQL

  4. Importujte soubor SQL do mysql