【问题标题】:Return a result set in a SP from a received result set (cursor)从接收到的结果集(游标)中返回 SP 中的结果集
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多