Как я могу отправить массив в хранимую процедуру? Какой формат данных лучший, если я отправлю его из JS? - PullRequest
0 голосов
/ 01 февраля 2012

Как отправить массив в хранимую процедуру? Я хочу отправить его из JS в хранимую процедуру. И какой формат данных лучше для этой задачи?

Ответы [ 4 ]

1 голос
/ 01 февраля 2012

В прошлом я использовал XML для передачи массивов данных на сервер SQL, и он довольно хорошо работает с типами данных XML и XQuery.

1 голос
/ 01 февраля 2012

SQL 2008 поддерживает табличные параметры - так что вы можете передать таблицу данных в качестве параметра sproc. Обычные способы до этого были, как уже упоминалось, через параметр CSV или XML.

Ссылка MSDN

1 голос
/ 01 февраля 2012

С MS SQL вы сможете использовать его как разделенный запятыми.

0 голосов
/ 01 февраля 2012

Вот простой пример использования входного параметра 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...