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'

请建议我如何做到这一点。

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 回答