Передать параметр «in» динамически - ms sql server - PullRequest
1 голос
/ 19 августа 2011

У меня следующий запрос ms-sql

select * from category where categoryId in (1)

Теперь вместо 1 мне нужно передать более одного IDI динамически с использованием параметров.Примерно так:

select * from category where categoryId in (@catId)

и значение @catId будет примерно равно 1,2.Когда я попробовал это, я получил сообщение об ошибке:

Ошибка преобразования типа данных varchar в bigint.

Как передать более одного ID категории.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

Вы можете использовать Табличные параметры , новую функцию в SQL Server 2008

1 голос
/ 19 августа 2011

Вместо этого вы можете использовать тип данных XML для передачи списка идентификаторов.

declare @catId xml = '<i>1</i><i>2</i><i>3</i>'

select *
from category
where categoryid in (select T.N.value('.', 'int')
                     from @catId.nodes('/i') as T(N))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...