Oracle
 sql >> база данни >  >> RDS >> Oracle

Обработка на грешки в Oracle

Грешка ORA-00942 обикновено ще бъде грешка във времето за компилиране. Oracle трябва да разреши имената на таблиците по време на компилиране. Манипулаторите на изключения ще улавят грешки по време на изпълнение, а не по време на компилиране.

Ако сте използвали динамичен SQL, можете да отложите разделянето на имената за времето на изпълнение, в който момент можете да хванете изключението, т.е.

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.

Но като цяло това не е разумен начин за писане на съхранени процедури. Вашите процедури трябва да знаят какви таблици действително съществуват и синтактичните грешки трябва да бъдат идентифицирани и разрешени по време на разработката, а не по време на изпълнение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите дали файлът е изображение, използвайки PL/SQL?

  2. Преобразуване на ограничен низ в редове в oracle

  3. Самодоволството води до:Рискът става реалност

  4. как да пиша sql заявки

  5. Как да промените таблицата за добавяне на колона оракул