Переменная статического курсора PL/SQL в качестве курсора ссылки
У меня есть процедура, которая принимает SYS_REFCURSOR и преобразует его в JSON.
В процедуре, которая вызывает вышеупомянутое, я пытаюсь определить CURSOR как нормальный и предоставить его как REF CURSOR.
Я получаю PLS-00361.
Я понимаю, что могу использовать конструкцию OPEN FOR, но мне нужно использовать свой курсор в другом месте и мне не нравится дублирование.
Любой совет?
PROCEDURE LIST_EMPLOYEES
AS
l_ref_cursor SYS_REFCURSOR;
CURSOR c_emps
IS
SELECT email_address
FROM employees;
BEGIN
OPEN c_emps;
FETCH c_emps INTO l_ref_cursor;
json_utils.refcursor_to_json_via_http(l_ref_cursor,
'employees');
CLOSE l_ref_cursor;
EXCEPTION
WHEN others
THEN
log_error;
END LIST_EMPLOYEES;
С уважением, Лоуренс.
1 ответ
Решение
Вы не получите курсор в REF CURSOR, вы просто откроете его:
PROCEDURE LIST_EMPLOYEES AS
l_ref_cursor SYS_REFCURSOR;
BEGIN
OPEN l_ref_cursor FOR SELECT email_address FROM employees;
json_utils.refcursor_to_json_via_http(l_ref_cursor, 'employees');
CLOSE l_ref_cursor;
END LIST_EMPLOYEES;