Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Альтернативный способ передачи и обработки массива целых чисел в MSSQL  [new]
jeka_tg
Guest
--1. Для примера сформируем массив чисел в бинарном виде и сконвертируем его в XML для передачи в параметр 
--(это можно сделать на клиенте).
--Таблица или массив целых чисел для примера
declare @ArrayOfInt table (id int)
insert into @ArrayOfInt
values (1111111), (222222222), (1234567890)

select * from @ArrayOfInt

--Конвертация таблицы или массива чисел в бинарный вид для примера
declare @bytesOfInt varbinary(max) 
select @bytesOfInt = isnull(@bytesOfInt + CAST(id as varbinary(max)), CAST(id as varbinary(max)))
from @ArrayOfInt

--Конвертация бинарных данных в XML для передачи куда-то для примера...
declare @xmlData xml = (
  select @bytesOfInt as 'base64Binary'
  for xml path(''))

--@xmlData = <base64Binary>ABD0Rw0+145JlgLS</base64Binary>

--2. Получение массива целых чисел уже на сервере через переменную...

declare @bytes varbinary(max) = @xmlData.value('base64Binary[1]','varbinary(max)');

--Выводим список целых чисел.
with cte as (
select 1 n
union all
select n+4 nn from cte
where n+4<=DATALENGTH(@bytes)
)
select cast(SUBSTRING(@bytes, n, 4) as int) as id
from cte c
option (MAXRECURSION 0)  
5 окт 11, 16:13    [11389521]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный способ передачи и обработки массива целых чисел в MSSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Уже давно существуют параметры табличного типа.
5 окт 11, 18:00    [11390559]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный способ передачи и обработки массива целых чисел в MSSQL  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
https://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml
5 окт 11, 18:24    [11390784]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить