Transact SQL - параметры в IN
Код:
WHERE aaa IN @aaa
Т.е. в качестве множества для выражения IN задать параметр, потом определив его значение при вызове в виде, к примеру, массива.
насколько я знаю в MS SQL 2000 нет массивов. можно было бы задать таблицу, тогда конструкция приобрела бы вид:
Код:
declare @aaa table (a int)
...
WHERE aaa IN (select a from @aaa)
...
WHERE aaa IN (select a from @aaa)
Код:
WHERE aaa IN (1, 2, 100)
Т.е. множества.
Код:
declare @aaa nvarchar(100)
set @aaa = '1,2,100'
declare @sql nvarchar(1000)
set @sql = 'select * from MyTable where a in ('+@aaa+')'
exec sp_executesql @sql
set @aaa = '1,2,100'
declare @sql nvarchar(1000)
set @sql = 'select * from MyTable where a in ('+@aaa+')'
exec sp_executesql @sql
других способов по-моему нет
Суть ясна. Жаль, метод из серии костылей. Но спасибо :)
Цитата: Ivanhoe
Интересует следующий момент. Возможно ли в T-SQL (MS SQL Server 2000) использовать конструкции вида:
Т.е. в качестве множества для выражения IN задать параметр, потом определив его значение при вызове в виде, к примеру, массива.
Код:
WHERE aaa IN @aaa
Т.е. в качестве множества для выражения IN задать параметр, потом определив его значение при вызове в виде, к примеру, массива.
лично я пользовался таким запросом:
SELECT ..... WHERE aaa IN (SELECT columnName FROM tableName)
и всё работало отлично.
может в чём пигадитса ;)
В любом случае, сделал с помощью замены по шаблону, подставив маркер в стиле "aaa IN (?_repalace_here_?)", заменяя его потом на требуемое множество.