returns 几行有条件的程序

Procedure which returns several rows conditionally

我有一个程序,它将 return 一个数字作为输出参数(我们称之为 out_parameter_result)。 根据这个数字我需要有条件地添加行。

伪代码示例(不考虑条件):

if(bitand(out_parameter_result, 1) = 1)
   result.add(select 1 from dual)
if(bitand(out_parameter_result, 2) = 2)
   result.add(select 2 from dual)
if(bitand(out_parameter_result, 4) = 4)
   result.add(select 4 from dual)
return cursor(or resultset) which will contain 1,2,4.

与原来的不同,但在我的情况下工作正常。

SELECT * FROM TABLE WHERE id IN (
       DECODE(bitand(v_info, 1), 1, 0, 1), 
       DECODE(bitand(v_info, 2), 2, 0, 2), 
       DECODE(bitand(v_info, 4), 4, 0, 3)