如何将数组发送到存储过程?如果我从JS发送它,最好的数据格式是什么?

时间:2012-02-01 14:36:53

标签: javascript sql-server-2008 stored-procedures

如何将数组发送到存储过程? 我想将它从JS发送到存储过程。这项任务的最佳数据格式是什么?

4 个答案:

答案 0 :(得分:1)

使用MS SQL,您应该能够以逗号分隔的方式使用它。

答案 1 :(得分:1)

我过去曾使用XML将数据数组传递到SQL服务器,并且它可以很好地处理XML数据类型和XQuery。

答案 2 :(得分:1)

SQL 2008支持表值参数 - 因此您可以将数据表作为参数传递给sproc。之前的常见方法如前所述 - 通过CSV或XML参数。

MSDN Reference

答案 3 :(得分:0)

这是一个使用CSV输入参数存储过程的简单示例。

create proc dbo.ListCustomers
(
    @CustomerIDs varchar(MAX)
)
as
begin

-- convert paramter to xml
declare @XmlStr varchar(MAX)
set @XmlStr = '<R><I ID="' + replace(@CustomerIDs, ',', '"></I><I ID="') + '"></I></R>'

-- table variable that holds the ID's
declare @IdTable table (ID int)

-- load the XML document and insert id's to @IdTable
declare @XmlDoc int
exec sp_xml_preparedocument @XmlDoc out, @XmlStr
insert into @IdTable select ID from openxml(@XmlDoc, '/R/I',1) with (ID int)
exec sp_xml_removedocument @XmlDoc


-- use @IdTable in your query
select c.*
from tblCustomer c
  join @IdTable as I on c.CustomerID = I.ID 

end
go

-- usage:
-- exec ListCustomers '3823,3838,3845,3925,4051'