パラメータに基づいて、where条件が異なるプロシージャがあります。 プロシージャから列を返すことができるように、OUTパラメータはINTO句にする必要があります。手順 - ダイナミック条件
if条件ごとにSQL条件を持つのではなく、これを行う効率的な方法は何ですか。
パラメータに基づいて、where条件が異なるプロシージャがあります。 プロシージャから列を返すことができるように、OUTパラメータはINTO句にする必要があります。手順 - ダイナミック条件
if条件ごとにSQL条件を持つのではなく、これを行う効率的な方法は何ですか。
デザインに関する質問にもっと似ています。 これは、達成する必要があり、コードをどのように整理したいかによって異なります。
可能性
1-同様の手順でクエリのあなたの「IF」鎖
-2-各クエリ
3のための1つの手順を「 - 」部分がない間differencies場合1つのクエリで異なるケースを共存させるために、大規模なSQL構造体を使用する。
4-動的にSQLをビルドし、即時実行する
通常、私は1を好きではない、私は3または4で試してみるだろう、次に2で進むことはできません。動的SQLを使用した
EDIT
、あなたは、クエリの入力のparamsを持っている場合は
EXECUTE IMMEDIATE stmt into o_total_count,o_total_sum,o_hold_status,o_normal_status;
を行うことができ、結果を抜け出すために、あなたがそれらをマークする必要があります。その後、USING句を追加適切な入力パラメータで置き換えます。
例
EXECUTE IMMEDIATE 'select count(*) from departments where department_id=:id' INTO l_cnt USING l_dept_id;
EXCUTE IMMEDIATEを使用している場合、値をOUTパラメータにどのように割り当てるか。 – user75ponic
EXECUTE IMMEDIATE sql_stmt INTO var1、var2; – Massimo
ダイナミックSQLの追加の説明については、私の編集を参照してください – Massimo
たぶんGurVは、私はすべての私のINパラメータを含めていない別のクエリの一部だけではなく、1 – Massimo
@GurVを投稿することを意図し、INパラメータ10の周りにあります。だから、条件はどこにあるのだろうか。 – user75ponic