Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Obsługa błędów Oracle

Błąd ORA-00942 będzie zazwyczaj błędem czasu kompilacji. Oracle musi rozwiązać nazwy tabel w czasie kompilacji. Programy obsługi wyjątków będą przechwytywać błędy w czasie wykonywania, a nie w czasie kompilacji.

Jeśli użyłeś dynamicznego SQL, możesz odłożyć rozwiązanie nazw do środowiska wykonawczego, w którym możesz przechwycić wyjątek, 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 generalnie nie jest to rozsądny sposób pisania procedur składowanych. Twoje procedury powinny wiedzieć, jakie tabele faktycznie istnieją, a błędy składni powinny być identyfikowane i rozwiązywane podczas tworzenia, a nie w czasie wykonywania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie CTE w Oracle

  2. Opcje formatowania SQLcl (Oracle)

  3. funkcja to_date z sysdate

  4. Konwertuj typ danych znacznika czasu na znacznik czasu uniksa Oracle

  5. Oracle PL/SQL:przykład dynamicznego SQL przy użyciu wykonania natychmiastowego