Прежде всего, ваш курсор имеет логические ошибки, переместите while @@FETCH_STATUS=0
сразу после открытия курсора, затем выполните что-то и переместите его к следующему значению
begin
print 'your current selected name is: '+@name
fetch next from kursor into @name
end
Проверьте правки:
использовать AdventureWorks2017
declare @name varchar(70)
declare kursor cursor
for (
select firstname
from Person.Person
where Person.Title = 'Mr.'
)
open kursor
fetch next from kursor into @name
while @@FETCH_STATUS=0
begin
print 'your current selected name is: '+@name
-- your statement goes here
fetch next from kursor into @name
end
close kursor
Deallocate kursor
Но в любом случае я согласен с ответом Гордона: есть несколько других способов (на самом деле, более эффективных), чтобы избежать использования курсора в описанной ситуации