Stored procedures 无法使用存储过程DB2从数据库表中使用游标检索多行

Stored procedures 无法使用存储过程DB2从数据库表中使用游标检索多行,stored-procedures,db2,mule,Stored Procedures,Db2,Mule,我试图使用存储过程从表中检索多行,但它对我不起作用。我的存储过程如下所示 CREATE OR REPLACE PROCEDURE E_Enquiry (IN SourceQueue1 VARCHAR(30) ) LANGUAGE SQL BEGIN DECLARE C1 CURSOR FOR select CreationTime from ms.Exception_Message where SourceQueue =

我试图使用存储过程从表中检索多行,但它对我不起作用。我的存储过程如下所示

CREATE OR REPLACE PROCEDURE E_Enquiry 
    (IN SourceQueue1 VARCHAR(30) ) LANGUAGE SQL
BEGIN 
    DECLARE C1 CURSOR FOR 
        select CreationTime 
        from ms.Exception_Message 
        where SourceQueue = SourceQueue1; 

    open c1; 
END;
我试图使用数据库连接器从Mule Anypoint Studio调用存储过程,并且在使用记录器打印有效负载时看到结果为null。如果我试图在查询返回一行时修改它,它就会工作(不使用游标)


请帮助解决此问题。谢谢。

什么平台和版本的DB2

尝试添加

  • 动态结果集1
  • 返回给客户
像这样:

CREATE OR REPLACE PROCEDURE E_Enquiry 
    (IN SourceQueue1 VARCHAR(30) ) 
LANGUAGE SQL
DYNAMIC RESULT SETS 1
BEGIN 
    DECLARE C1 CURSOR WITH RETURN TO CLIENT FOR 
        select CreationTime 
        from ms.Exception_Message 
        where SourceQueue = SourceQueue1; 

    open c1; 
END;

DB2的平台和版本是什么

尝试添加

  • 动态结果集1
  • 返回给客户
像这样:

CREATE OR REPLACE PROCEDURE E_Enquiry 
    (IN SourceQueue1 VARCHAR(30) ) 
LANGUAGE SQL
DYNAMIC RESULT SETS 1
BEGIN 
    DECLARE C1 CURSOR WITH RETURN TO CLIENT FOR 
        select CreationTime 
        from ms.Exception_Message 
        where SourceQueue = SourceQueue1; 

    open c1; 
END;

@发条系统Muse,声明和打开游标通常是从存储过程返回结果集的方式。我知道你知道这一点,所以你的评论把我弄糊涂了。@Charles-事实上,我没有。谢谢你教我!我想我对函数和命令式语言有点太习惯了-我觉得我以前看到的示例都是显式返回游标类型。@Clockwork Muse,声明和打开游标通常是从存储过程返回结果集的方式。我知道你知道这一点,所以你的评论把我弄糊涂了。@Charles-事实上,我没有。谢谢你教我!我想我有点太习惯函数和命令式语言了——我觉得我以前看到的例子都是显式返回游标类型。