微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用弱类型的游标变量

如何解决使用弱类型的游标变量

CREATE or replace PROCEDURE return_result_set ( )
    LANGUAGE sql
    SPECIFIC return_result_set                   
DYNAMIC RESULT SETS 1
rrs: BEGIN
    
    DECLARE rs_cur CURSOR WITH RETURN
        FOR SELECT *
            FROM dummytable;
    OPEN rs_cur;                                  
                                            
END rrs

我可以使用上面的存储过程使用游标返回结果集,但是我想在存储过程中使用cursor variable (Weakly-typed),因为选择查询和表将根据条件而变化。示例代码here似乎是针对不同的用例。

如何使用游标变量返回结果集?

解决方法

按原样尝试:

--#SET TERMINATOR @

SET SERVEROUTPUT ON@

BEGIN
  DECLARE V_C1 CURSOR;
  DECLARE V_I INT;
  
  DECLARE PROCEDURE L_PROC(OUT LP_C1 CURSOR) 
    BEGIN 
      -- Dynamic cursor
      --DECLARE V_STMT VARCHAR(128) DEFAULT 'SELECT * FROM (VALUES 1) T(I)';
      --PREPARE V_S1 FROM V_STMT;
      --SET LP_C1 = CURSOR FOR V_S1;

      -- Static cursor
      SET LP_C1 = CURSOR FOR SELECT * FROM (VALUES 1) T(I);

      OPEN LP_C1;
    END;
 
  CALL L_PROC(V_C1);
  FETCH V_C1 INTO V_I;
  CALL DBMS_OUTPUT.PUT_LINE('I: ' || V_I);
  CLOSE V_C1;
END@

SET SERVEROUTPUT OFF@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。