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ę.