将数组作为参数传递给SQL 2005存储过程

时间:2009-12-17 14:34:54

标签: sql sql-server-2005

如何将数组作为参数传递给SQL Server 2005中的存储过程,我这不可能是SQL Server 2000,所以我们在过去传递逗号分隔值。

任何帮助表示赞赏

4 个答案:

答案 0 :(得分:2)

有许多不同的方法,请参阅:

Arrays and Lists in SQL Server 2005

答案 1 :(得分:0)

Sql Server 2005仍然如此。

您使用XML类型

XML Support in Microsoft SQL Server 2005

以下是如何使用XML数据类型

将字符串拆分为行的示例
DECLARE @textXML XML
DECLARE @data NVARCHAR(MAX), 
        @delimiter NVARCHAR(5)

SELECT  @data = 'A,B,C',
        @delimiter = ','

SELECT    @textXML = CAST('<d>' + REPLACE(@data, @delimiter, '</d><d>') + '</d>' AS XML)
SELECT  T.split.value('.', 'nvarchar(max)') AS data
FROM    @textXML.nodes('/d') T(split)

答案 2 :(得分:0)

您可以发送XML,然后在过程中解析它,而不是CSV。例如,请查看Passing lists to SQL Server 2005 with XML Parameters

答案 3 :(得分:0)

有关将数组作为image / varbinary对象传递并在SP中解析它们的方法,请参阅Passing an array or DataTable into a stored procedure