在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";
但我不知道是否可以传递数据表而不是原始值以及如何传递数据表。有什么想法吗?
由于
答案 0 :(得分:0)
你看过PASTHRU statement了吗?我没有尝试过你之前提出的问题,但文档听起来很有希望(假设限制不能阻止你使用它)。
如果符合以下条件,PASSTHRU仍可用于调用存储过程:
- 只能使用输入参数。
- 仅支持单个结果集。
如果您不符合这些条件,请使用CALL语句,因为PASSTHRU 强加限制(例如,您不能使用输出参数)。