2
一時テーブルまたはテーブル変数を使用してSQL ServerストアドプロシージャをOracleに移行する方法
SQL Serverストアドプロシージャを作成するよう経営陣に勧められたC#開発者は、このようなプロシージャを生成することがよくあります。 create table #t1 (...); insert into #t1 Select ... from table_a where ...; insert into #t1 Select ... from table_b where ...; update #t1 Set ... = ... where ... Select * from #t1; 単一のステートメントはかなり単純であり、この方法により、正しい結果が生成されます。 多くの場合、私の仕事はそのような手順をOracleに移行することです。 次の事実に直面しましょう。 SQL Serverの異なる一時テーブルは完全に独立しており、任意のアドホック構造を持つことができます。 Oracleグローバル共通テーブルはグローバルオブジェクトであり、すべての用途で同じテーブル構造を共有します。この構造はどこでも使用されていますが、変更することはできません。 Oracle dbaから学んだことの1つは、可能な場合は常に一時テーブルの使用を避けることでした。SQLサーバーのパフォーマンスでさえ、このような変更の恩恵を受けます。 個々のインサートをユニオンに置き換える 最も単純なケースでは、上記は次のようなものに変換できます。 select case when ... …