1

DB2 ストアド プロシージャには、非常に複雑な where 句を含む SQL クエリがいくつかあります。これらの句は、読み取り、維持が難しく、コピーと貼り付けなしでは select ステートメント間で共有できません。以前は動的 SQL を記述し、where 句の部分を個別に連結して、少なくともロジックを明確にしました。動的 SQL を使用せずにこれを行う方法はありますか? ユーザー定義関数について考えていますが、それらは重すぎて、これには遅すぎる可能性があります。何か案は?

4

1 に答える 1

0

クエリの前にいずれかの句を決定できる場合 (つまり、ストアド プロシージャに渡されたパラメーターに基づいて)、その句の結果を変数に格納し、その変数をクエリで使用することができます。他のストアド プロシージャと共有するために、それを別のストアド プロシージャに抽出できます。

ストアド プロシージャのパラメーターに基づいていない句は、ビューに抽出できます。すべてのストアド プロシージャは、実際のパラメーターを使用してビューをクエリできます。これは、特に結合の前にテーブル内の行を大幅に絞り込むことができる場合、単一の SQL ステートメントよりも遅くなる可能性があることに注意してください。

それ以外では、動的 SQL またはコピー/貼り付けの使用に固執していると思います。

于 2012-10-02T15:53:45.883 に答える