0

入力されている場合は、ストアド プロシージャのパラメータを確認する必要があり、それを選択する必要があります

i=j=k=l=m=1;
IF (p_plant_cd IS NULL) THEN
   i=0;
END IF;
IF(p_global_duns_nbr IS NULL) THEN
   j=0
END IF;
IF(p_global_duns_nbr IS NULL) THEN
   k=0
END IF;
IF(p_matrl_grp IS NULL) THEN 
   l=0
END IF;
IF (p_mrp IS NULL) THEN
   m=0
END IF ;

変数に対応するパラメーターを追加する必要がある値は 1 ですv_select

例えば;

if k and l are 1 then 
v_select='p_global_duns_nbr,p_matrl_grp'

Plsはこれを行う方法を私に提案します。

4

1 に答える 1

2

列名を保持する変数を宣言し、連結して select ステートメントを作成し、 v_select に SQL select ステートメントを使用して、必要に応じて使用できます。

declare
    v_columns varchar2(255);
    v_select varchar2(2000);
    v_result sys_refcursor;
begin

    v_columns := 'rownum';

    IF p_plant_cd = 1 THEN
       v_columns := v_columns || ',p_plant_cd';
    END IF;

    IF p_global_duns_nbr = 1 THEN
       v_columns := v_columns || ',p_global_duns_nbr';
    END IF;

    IF p_global_duns_nbr = 1 THEN
       v_columns := v_columns || ',p_global_duns_nbr';
    END IF;

        IF p_matrl_grp = 1 THEN
       v_columns := v_columns || ',p_matrl_grp';
    END IF;

    IF p_mrp = 1 THEN
       v_columns := v_columns || ',p_mrp';
    END IF; 



    v_select := 'SELECT ' || v_columns || ' FROM table';

    open v_result for v_select;




end;
于 2013-02-19T05:57:42.097 に答える