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. MySQLTunnerツールを使用してMySQL/MariaDBのパフォーマンスを最適化する

    2. MySQLで列の照合を表示する方法

    3. mysqlテーブルから選択WHEREfield='$ array'?

    4. トランザクション内でautocommit=0を設定すると、何かが行われますか?