PL / SQL静态游标变量作为引用游标

时间:2012-04-16 13:57:42

标签: plsql ref-cursor sys-refcursor

我有一个程序,它接受一个SYS_REFCURSOR并将其转换为JSON。

在调用上述内容的过程中,我正在尝试将CURSOR定义为正常并将其作为REF CURSOR提供。

我正在收到PLS-00361。

我知道我可以使用OPEN FOR构造,但我需要在其他地方使用我的Cursor并且不喜欢重复。

有什么建议吗?

  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 个答案:

答案 0 :(得分:0)

您不会将光标移到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;