我想知道是否可以在存储过程中重新返回结果集(打开的游标),这是我从先前的存储过程中收到的。
我们假设
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调用,因此我无法更改第一个光标以返回到客户端。
当声明游标有“WITH RETURN TO CLIENT”或“WITH WITH RETURN TO CALLER”时,你可以选择使用“WITH RETURN TO CLIENT”