declare @A varchar(5000) 
declare @B varchar(5000)

select @A=value from drp.Parameter where parameteridname='IV01'
--result of this query ('DIM003966','DIM000736','DIM025297',
--                                                      'DIM025302','DIM027583')

select [InventLocationId],[WMSLocationId] from ItemKit.InventDim
where inventdimid in (@A)

Я не получаю никакого результата из второго запроса, но если я запускаю их индивидуально и использую результат 1-го запроса во втором, я получаю его. есть ли способ объединить их

0
Jayesh Shinde 20 Май 2014 в 14:25

3 ответа

Лучший ответ

Это потому, что он оценивает @a как есть (как текст, а не список значений).

Вы должны создать оператор sql на лету и выполнить его:

declare @sqlStatement nvarchar(4000)

@sqlStatement = 'select [InventLocationId],[WMSLocationId] from ItemKit.InventDim where inventdimid in (' + @A + ')'

execute sp_executesql @sqlStatement

Но, как говорят другие, не используйте без крайней необходимости.

2
Patrick Hofman 20 Май 2014 в 10:30

Вам следует использовать этот код:

select [InventLocationId],[WMSLocationId] from ItemKit.InventDim
where inventdimid in (select value from drp.Parameter where parameteridname='IV01')
2
Toan Nguyen 20 Май 2014 в 10:27