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

Таблица, създадена в процедура, е премахната, грешка при компилиране за процедура

Кодът, който трябва да провери дали таблица съществува, показва лоша софтуерна архитектура. Не трябва да има нужда да създавате таблици в движение. Това е анти-модел (поне в Oracle). Въпреки това, виждаме вариации на този проблем достатъчно често, така че е очевидно, че този анти-модел процъфтява в дивата природа.

Ако наистина трябва да приложите такова решение (по каквато и да е причина), правилният подход е да отделите кода за изграждане на таблица от таблицата с помощта на код. Имайте отделни пакети за тях.

begin
    pkg_ddl.build_table_xyz;
    pkg_calc.run_xyz_job;
end;

Ако таблица XYZ не съществува pkg_calc.run_xyz_job() е невалиден. Невалидността му обаче няма да попречи на pkg_ddl.build_table_xyz() от изпълнение. След това, когато външната програма извика pkg_calc.run_xyz_job() той ще компилира процедурата.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. трасиране на изявления на оракул

  2. Не може да се прочете правилно SQL таблица в python:колоните varchar се импортират като разделени със запетаи знаци/кортежи

  3. LISTAGG еквивалент с прозоречна клауза

  4. Заявка със заместващ знак и точка не съответства на данни с индекс на Oracle Text

  5. В SQL сървър как мога да направя заявка за колона с времеви печат на Oracle през свързана сървърна връзка?