views:

196

answers:

4

Hi All,

How to pass array as parameter to a Store Procedure in SQL Server 2005, i this is not possible SQL server 2000, so we pass comma separated values in past.

any help appreciated

A: 

This is still the case with Sql Server 2005.

You make use of the XML type

XML Support in Microsoft SQL Server 2005

Here is an example of how to split a string into rows using the XML data type

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)
astander
Problem with using XML is that the markup eats the characters you can submit, because the markup is characters as well :/
OMG Ponies
Hye, how are you, havent seen you in some time. Yes that is unfortunately true X-(
astander
I'm doing my best to keep ahead of you, but it's hard work =)
OMG Ponies
+1  A: 

For a number of different ways to do this, please see:

Arrays and Lists in SQL Server 2005

Mitch Wheat
Thanks for your response, seems like we are unable to pass array directly but can achieve desired goal through many alternatives mention in above link
Faizan Dosani
A: 

Instead of a CSV, you could send an XML and then parse it in the procedure. For an example, look at Passing lists to SQL Server 2005 with XML Parameters

Vedran
A: 

See Passing an array or DataTable into a stored procedure for a method of passing arrays as image / varbinary objects and parsing them in the SP which is possible in SQL 2000 as well.

doza