2

この SQL Server Postは非常に役に立ちました。Oracle 11g で PL/SQL を使用しています。カーソルが と の両方を受け入れるようにしv_parm1ますv_parm2

これが私がやったことです。

DECLARE 
v_parm1 varchar2(50) := 'TALC';
v_parm2 varchar2(50) := '*';

cursor cursor_with_parms(in_parm_list varchar2)
is 
with mohs_scale as
(select '1' as moh_val , 'TALC' as mineral from dual union all
 select '2' as moh_val , 'GYPS' as mineral from dual union all
 select '3' as moh_val , 'CALC' as mineral from dual union all
 select '4' as moh_val , 'FLUO' as mineral from dual) 
 select moh_val,
        mineral 
 from   mohs_scale
 where
   case  in_parm_list when '*' then  mineral is not null 
   else   mineral = in_parm_list
end;      

BEGIN
for rock in cursor_with_parms(v_parm1) loop
dbms_output.put_line(rock.moh_val || ' ' || rock.mineral);
end loop; 
END; 

使用する場合はv_parm1、1-TALC のみを返します。使用するとv_parm2、4行すべてが返されます。

質問:v_parm1またはのいずれかを受け入れるようにカーソルを作成するにはどうすればよいv_parm2ですか?

4

2 に答える 2

1

次のような WHERE 句はどうでしょうか。

 WHERE
       (in_parm_list = '*')
    OR (mineral = in_parm_list)
于 2013-08-02T20:11:21.817 に答える
0

クエリを動的に変更する場合は、Ref カーソルを作成します。

于 2013-08-01T22:51:07.660 に答える