1

我想知道是否可以在存储过程中重新返回结果集(打开的游标),这是我从以前的存储过程收到的。

让我们假设

 CREATE OR REPLACE PROCEDURE SP2 ()
   RESULT SET 1
 P_SP2: BEGIN
  DECLARE SENTENCE VARCHAR(128);
  DECLARE STMT STATEMENT;
  DECLARE CUR2 CURSOR
    WITH RETURN TO CALLER
    FOR RS;
  SET SENTENCE = 'SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1';
  PREPARE RS FROM SENTENCE;
  OPEN CUR2;
 END P_SP2@

 CREATE OR REPLACE PROCEDURE SP1 ()
   RESULT SET 1
 P_SP1: BEGIN
  DECLARE LOC1 RESULT_SET_LOCATOR VARYING;
  CALL SP2();
  ASSOCIATE RESULT SET LOCATORS (LOC1) WITH PROCEDURE SP2;
  ALLOCATE CUR1 CURSOR FOR RESULT SET LOC1;

  -- >>>>
  OPEN CUR1;
  -- <<<<

 END P_SP1 @

我不知道如何重新返回收到的结果集。我知道游标已经打开,但是调用 sp1 时不会返回它。

这些是内部 sp 调用,因此我无法更改第一个光标以返回客户端。

4

1 回答 1

0

当声明游标有“WITH RETURN TO CLIENT”或“”WITH RETURN TO CALLER”时,您可以选择使用“WITH RETURN TO CLIENT”

于 2018-07-18T12:25:08.483 回答