【发布时间】:2014-06-23 22:21:26
【问题描述】:
我想知道是否可以在存储过程中重新返回我从以前的存储过程收到的结果集(打开的游标)。
假设
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 调用,所以我无法更改第一个光标以返回客户端。
【问题讨论】:
-
看来我应该使用一个临时表,在上面插入游标中的值,然后从临时表中打开一个新游标。其他选择?
标签: stored-procedures db2 sql-pl