Oracle 如何从存储过程返回空游标?

Oracle 如何从存储过程返回空游标?,oracle,stored-procedures,cursor,ref-cursor,Oracle,Stored Procedures,Cursor,Ref Cursor,我将存储过程的OUT参数作为REF游标。基于特定条件,我希望返回一个结果集(已经实现)。但是,当条件失败时,如何返回空游标?没有例外吗?仅粘贴伪代码: IF condition = true THEN OPEN OUT_CUR FOR Select Some query ELSE Return empty OUT_CUR END IF 你可以试试这个 IF condition = true THEN OPEN OUT_CUR FOR Select Som

我将存储过程的
OUT
参数作为
REF游标
。基于特定条件,我希望返回一个结果集(已经实现)。但是,当条件失败时,如何返回空游标?没有例外吗?仅粘贴伪代码:

IF condition = true THEN
   OPEN OUT_CUR FOR 
   Select Some query

ELSE

   Return empty OUT_CUR

END IF
你可以试试这个

IF condition = true THEN
   OPEN OUT_CUR FOR 
   Select Some query;
ELSE
   OPEN OUT_CUR FOR 
       Select * from mtable where 1=2;
END IF
return OUT_CUR;

还有其他返回空集的标准方法吗?据我所知,这与@Satya八年前的建议之间的唯一区别是,您使用
unest(数组[1,2])arr where false
,而Satya使用
mtable where 1=2
。您能否编辑您的答案,以讨论为什么您的方法可能比Satya公认的答案更可取?因为不需要任何表格来返回空游标。
IF condition = true THEN
   OPEN OUT_CUR FOR 
   Select Some query

ELSE

    OPEN OUT_CUR FOR select * from unnest(array[1,2]) arr where  false 

END IF