我有以下使用游标的存储过程。根据游标是否返回任何记录,我需要进行一些处理。
但是我不确定如何检查游标是否返回任何记录。
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/