我有一个以下存储过程,我使用了一个游标.根据游标是否返回任何记录,我需要进行一些处理.
但我不知道如何检查光标是否返回任何记录.
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;
Run Code Online (Sandbox Code Playgroud)
A.B*_*ade 13
无法在不打开的情况下检查光标是否返回记录.
(见这里)
所以你可以有一些快速查询只是为了查看是否有记录(例如使用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;
Run Code Online (Sandbox Code Playgroud)
Sim*_*iak 11
我认为只有这样才有可能FETCH
.尝试使用
if myCursor%found then
// some body
end if;
Run Code Online (Sandbox Code Playgroud)
但如果有人知道另一种方式,那么纠正我.