oracle - 如何检查游标是否在oracle中返回任何记录?

标签 oracle cursor

我有以下使用游标的存储过程。根据游标是否返回任何记录,我需要进行一些处理。

但是我不确定如何检查游标是否返回任何记录。

CREATE OR REPLACE PROCEDURE SP_EMPLOYEE_LOOKUP_BY_EMP_ID
(
      IN_USER_ID IN NUMBER, 
      IN_EMPLOYEE_ID NUMBER,
      IN_HC_AS_ON_DATE VARCHAR2,
      emp_cursor OUT SYS_REFCURSOR
) 
IS 

 CURSOR employees IS 
    SELECT  * FROM EMPLOYEE e; 

BEGIN    

if(record exist ) then 

 FOR employee IN employees
  LOOP  

        // do something  

  END LOOP; 
else if employees is empty then 
     // do something else 

END;

最佳答案

如果不打开游标就无法检查游标是否返回了记录。
(请参阅here)
因此,您可以进行一些快速查询,以查看是否有记录(例如,使用count),

或者,您可以这样做:

CREATE OR REPLACE PROCEDURE SP_EMPLOYEE_LOOKUP_BY_EMP_ID
(
      IN_USER_ID IN NUMBER, 
      IN_EMPLOYEE_ID NUMBER,
      IN_HC_AS_ON_DATE VARCHAR2,
      emp_cursor OUT SYS_REFCURSOR
) 
IS 

 is_found_rec boolean := false;    

 CURSOR employees IS 
    SELECT  * FROM EMPLOYEE e; 

BEGIN    

 FOR employee IN employees
  LOOP  

    is_found_rec := true;

        // do something  

  END LOOP; 

 if not is_found_rec then 
     // do something else 
 end if;

END;

关于oracle - 如何检查游标是否在oracle中返回任何记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10814111/

相关文章:

oracle - 在 Oracle 触发器中,我可以将 new 和 old 分配给 rowtype 变量吗?

java - 列索引无效

javascript - 如何在 css 中悬停时更改光标大小

java - 如何在sqlite android中通过搜索单词的首字母获取所有数据?

mysql - 循环光标以匹配字段

Oracle WebLogic 12c 部署计划存档?

oracle - 在 TNSORANAMES.ora 中引用外部文件

java - Hibernate hql 子字符串函数在 postgres 和 oracle 中的行为不同?

c++ - 使用光标操作打印垂直直方图 C++[ncurses][解决了 w/o ncurses]

cursor - 更改小部件鼠标悬停上的光标(PyGObject)