Plsql PL/SQL静态游标变量作为ref游标

Plsql PL/SQL静态游标变量作为ref游标,plsql,ref-cursor,sys-refcursor,Plsql,Ref Cursor,Sys Refcursor,我有一个接受SYS_REFCURSOR并将其转换为JSON的过程 在调用上述函数的过程中,我尝试将游标定义为普通游标,并将其作为REF游标提供 我收到PLS-00361 我知道我可以使用openforconstruct,但我需要在其他地方使用游标,并且不喜欢重复 有什么建议吗 PROCEDURE LIST_EMPLOYEES AS l_ref_cursor SYS_REFCURSOR; CURSOR c_emps IS SELECT email_ad

我有一个接受SYS_REFCURSOR并将其转换为JSON的过程

在调用上述函数的过程中,我尝试将游标定义为普通游标,并将其作为REF游标提供

我收到PLS-00361

我知道我可以使用openforconstruct,但我需要在其他地方使用游标,并且不喜欢重复

有什么建议吗

  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;
问候,,
Laurence.

您不会将光标移到REF光标中,您只需打开它:

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;

谢谢文森特,我知道我能做到,但如果我想做多次呢?我必须一遍又一遍地重复我的游标。如果您不止一次需要这个游标,请创建一个返回SYS_REFCURSOR的函数,并通过_http调用该函数:
json.REFCURSOR_to_json_(我的_函数,'employees')