如何将数据表作为输入传递给IIB中的过程?

时间:2017-10-31 11:13:36

标签: ibm-integration-bus

在SQL Server中我可以创建一个过程来接收数据表作为输入而不是基本类型,这样我就可以传递一个值列表,如下例所示。

--Create Type
CREATE TYPE dbo.NamesList
AS TABLE
(
  fullName VARCHAR(50)
);
--Create Procedure
CREATE PROCEDURE dbo.DoSomethingWithNames
  @List AS dbo.NamesList READONLY
AS
BEGIN
  SET NOCOUNT ON;

  SELECT fullName FROM @List;
END

--Example of SQL Call
--Set variable values
DECLARE @NL NamesList;
INSERT @NL VALUES ('Bill'),('Michael'),('Paul'),('William'),('Kate')
--Call procedure
Exec DoSomethingWithNames @NL

在IBM IIB上,我可以使用如下代码调用存储过程:

CREATE PROCEDURE GetFiles (IN idFile INTEGER)
LANGUAGE DATABASE
DYNAMIC RESULT SETS 1
EXTERNAL NAME "dbo.SP_S_FILE";

但我不知道是否可以传递数据表而不是原始值以及如何传递数据表。有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)

你看过PASTHRU statement了吗?我没有尝试过你之前提出的问题,但文档听起来很有希望(假设限制不能阻止你使用它)。

  

如果符合以下条件,PASSTHRU仍可用于调用存储过程:

     
      
  • 只能使用输入参数。
  •   
  • 仅支持单个结果集。
  •   
     

如果您不符合这些条件,请使用CALL语句,因为PASSTHRU   强加限制(例如,您不能使用输出参数)。