テーブルが存在するかどうかを確認する必要があるコードは、ソフトウェアアーキテクチャが不良であることを示しています。その場でテーブルを作成する必要はありません。これはアンチパターンです(少なくとも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()
を呼び出すと プロシージャをコンパイルします。