Для более подробного объяснения у меня есть такой сценарий.
Я знаю, что это правильный способ инициировать курсор:
DECLARE cur CURSOR LOCAL FOR
SELECT NAME FROM namelist;
OPEN cur;
Но мне нужно, чтобы он был таким
DECLARE cur CURSOR LOCAL FOR
SELECT NAME FROM namelist where nameID in ('1,2,3,4');
OPEN cur;
Причина в том, что я передаю числа (1,2,3,4) для параметра моей хранимой процедуры
, поэтому допустим, что у меня есть этот параметр, который был взятиз системы
declare @namelist as varchar(20)
set @namelist = '1,2,3,4'
Я хочу, чтобы значение параметра использовалось в моем IN
выражении
DECLARE cur CURSOR LOCAL FOR
SELECT NAME FROM namelist where nameID in (@namelist)
OPEN cur;
, но я знаю, как это сделать, используяэтот метод:
exec (SELECT NAME FROM namelist where nameID in ('+@namelist+'))
однако этот метод нельзя использовать следующим образом:
DECLARE cur CURSOR LOCAL FOR
exec (SELECT NAME FROM namelist where nameID in ('+@namelist+')
OPEN cur;
ошибка, которая заявляет
Incorrect syntax near exec, expecting'(', SELECT, or WITH
Так что вы, ребята, можете датьмне идея, как использовать параметризованный оператор в курсоре?