首页 > 解决方案 > 如何在 OUT SYS_REFCURSOR 中返回 null

问题描述

我在包中有一个返回 SYS_REFCURSOR 的过程,我想根据条件返回 null 或空,不知道该怎么做。

  PROCEDURE test(  id_number IN VARCHAR2,
                   resultIN OUT SYS_REFCURSOR) AS
    BEGIN
    if true then
     OPEN resultIN FOR
       SELECT 
       fieldsValue 
      from TableName;
    ELSE
    Return empty resultIN ;
    END IF;
  END;

这对我不起作用。我怎么能这样做。

标签: sqloracleplsqlcursorplsql-package

解决方案


您可以按如下方式使用假查询:

OPEN resultIN FOR
select * from dual where 1=2; 

-- if you want one row also then use 

OPEN resultIN FOR
select case when 1=2 then 1 end as dummy_row from dual; 

使用它很重要,OPEN resultIN FOR否则将使用它的应用程序将直接抛出关闭游标错误。(光标未打开。)


推荐阅读