使用弱类型的游标变量

问题描述

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@

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...