Переменная статического курсора 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;
Другие вопросы по тегам