从接收的结果集(光标)返回SP中的结果集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从接收的结果集(光标)返回SP中的结果集相关的知识,希望对你有一定的参考价值。

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

我们假设

 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”

以上是关于从接收的结果集(光标)返回SP中的结果集的主要内容,如果未能解决你的问题,请参考以下文章

存储过程中的动态 SQL 不返回结果集;在 SSMS 中运行时,我得到了结果

JDBC结果集

如何在存储过程中直接使用另一个存储过程返回的数据集

NHibernate 处理来自 sp 调用的多个结果集

JDBC的结果集

如何从 SqlDataReader 读取多个结果集? [复制]