У меня есть SP, у которого есть nvarchar(max)
параметр @p1
.Это разделенный запятыми список кодов, например 100,200,300
и т. Д.
. Внутри SP я объявляю переменную @p2 nvarchar(max)
и преобразую список @p1
в один список в кавычках
set @p2 = N'''' + replace(@p1,',',''',''') + ''''
Когда я "выбираю" @p2
, это возвращает правильное значение '100', '200', '300'
Если я затем использую @p2
в подвыборке, например,
select x,y,z from table1 where id in (@p2)
Я не получаю возвращенных строк?Если я изменю тот же SQL, чтобы использовать тот же строковый литерал, который я получил из предыдущего выбора, я получу строки в порядке?
Как я могу передать строку, содержащую список идентификаторов, заключенных в одинарные кавычки, в SP и использовать это в подвыборах?Я подробно это погуглил, и можно преобразовать список во временную таблицу внутри SP и использовать его, но мне нужно использовать список в кавычках, чтобы я мог использовать подсказку запроса OPTIMIZE FOR.