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

Tabela utworzona w procedurze zostaje usunięta, pojawia się błąd kompilacji procedury

Kod, który musi sprawdzić, czy tabela istnieje, wskazuje na złą architekturę oprogramowania. Nie powinno być potrzeby tworzenia tabel w locie. To anty-wzorzec (przynajmniej w Oracle). Jednak dość często widzimy różne odmiany tego problemu, więc oczywiste jest, że ten antywzór kwitnie na wolności.

Jeśli naprawdę potrzebujesz zaimplementować takie rozwiązanie (z jakiegokolwiek powodu), właściwym podejściem jest oddzielenie kodu budującego tabelę od tabeli za pomocą kodu. Przygotuj dla nich osobne pakiety.

begin
    pkg_ddl.build_table_xyz;
    pkg_calc.run_xyz_job;
end;

Jeśli tabela XYZ nie istnieje pkg_calc.run_xyz_job() jest nieważny. Jednak jego nieważność nie zapobiegnie pkg_ddl.build_table_xyz() od wykonania. Następnie, gdy zewnętrzny program wywoła pkg_calc.run_xyz_job() skompiluje procedurę.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać pierwszą ciągłą grupę wierszy za pomocą Oracle SQL

  2. 7 sposobów na sprawdzenie wersji Oracle

  3. null vs pusty ciąg w Oracle

  4. Wyłączenie skryptu SQL*Plus

  5. Jak zaimportować dane Oracle Clob do plików avro na hdfs?