【问题标题】:PL/SQL Static cursor variable as ref cursorPL/SQL 静态游标变量作为参考游标
【发布时间】:2012-04-16 13:57:42
【问题描述】:

我有一个接受 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;

问候, 劳伦斯。

【问题讨论】:

    标签: plsql ref-cursor sys-refcursor


    【解决方案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;
    

    【讨论】:

    • 谢谢文森特,我知道我可以这样做,但如果我想多次这样做怎么办?我将不得不一遍又一遍地重复我的光标。
    • 如果您多次需要此光标,请创建一个返回 SYS_REFCURSOR 的函数并调用该函数:json.refcursor_to_json_via_http(my_function, 'employees');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2012-03-27
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多