【发布时间】:2020-11-18 04:54:15
【问题描述】:
我想遍历从返回 SYS_REFCURSOR 的函数返回的记录 这可能吗?提前感谢您的帮助。
FOR R_RECORD IN get_direct_reports(23) LOOP
IF R_RECORD.EMAIL = 'Hi@.com' THEN
do a bunch of stuff
ELSE
do a bunch of different stuff,etc
END IF;
END LOOP;
示例函数 创建或替换函数 get_direct_reports( in_manager_id IN employees.manager_id%TYPE) 返回 SYS_REFCURSOR 作为 c_direct_reports SYS_REFCURSOR; 开始
OPEN c_direct_reports FOR
SELECT
employee_id,
first_name,
last_name,
email
FROM
employees
WHERE
manager_id = in_manager_id
ORDER BY
first_name,
last_name;
RETURN c_direct_reports;
END;
调用函数的示例代码,我想将其更改为循环通过返回的数据
DECLARE
c_direct_reports SYS_REFCURSOR;
l_employee_id employees.employee_id%TYPE;
l_first_name employees.first_name%TYPE;
l_last_name employees.last_name%TYPE;
l_email employees.email%TYPE;
BEGIN
-- get the ref cursor from function
c_direct_reports := get_direct_reports(46);
-- process each employee
LOOP
FETCH
c_direct_reports
INTO
l_employee_id,
l_first_name,
l_last_name,
l_email;
EXIT
WHEN c_direct_reports%notfound;
dbms_output.put_line(l_first_name || ' ' || l_last_name || ' - ' || l_email );
END LOOP;
-- close the cursor
CLOSE c_direct_reports;
END;
【问题讨论】:
标签: oracle plsql database-cursor