如何在SQL Server(2008)SP中将集合用作参数?

时间:2016-12-21 17:09:43

标签: sql sql-server sql-server-2008 tsql

所以,我有这个存储过程(让我们称之为SP1)作为参数获取两个字符串(比如string1和string2)

但是,我需要从我的代码中调用这个存储过程,所以为了让事情变得更快,我正在考虑批量完成它。将所有参数收集到某种集合中,然后发送。

根据我的理解,我需要在代码端使用DataTable,并在SQL Server端使用自定义表类型 - 好吧,很酷。但是......现在是什么?

但是......我怎么从那里到达我实际去的地方

EXEC SP1 string1, string2 or something along those lines?

3 个答案:

答案 0 :(得分:0)

创建表格类型

CREATE TYPE Strings AS TABLE ( String1 VARCHAR(50), String2 VARCHAR(50) )

更改您的程序以接受表格类型作为输入

ALTER PROCEDURE Usp_procname (@strings STRINGS Readonly)
AS
..

调用程序

DECLARE @strings STRINGS

INSERT INTO @strings
            (String1,String2)
SELECT 'String1','String2'
UNION ALL
SELECT 'String3','String4'
UNION ALL
SELECT 'String5','String6'

EXEC Usp_procname @strings 

通过这种方式,您可以在一次调用中传递多个字符串。确保更新过程中的逻辑以处理多个字符串

答案 1 :(得分:0)

不确定这是否是您想要实现的,而不是解析这两个字符串参数,您想获得一个包含所有字符串行的表吗? 如果是这样,您可以在SP中使用UDF

点击此处:

CREATE FUNCTION [dbo].[Name]
     (
     @parameter
     )
RETURNS @Table TABLE 
    (
    col1 varchar(50),
    col2 varchar(50)
    )
AS
BEGIN
**the query that inserts each records to TABLE**
END

然后在SP中使用此[Name] UDF

答案 2 :(得分:0)

在像这样的情况下,我通常连接字符串并在服务器端拆分它们,或者如果我有多个列就传递一个xml。 Sql处理xml时速度非常快。您可以尝试所有方法并检查处理时间,然后选择最佳方法。

相关问题