Использование вашего курсора из приведенного вами примера просто вытягивает (случайную) строку из таблицы student
. Это функционально эквивалентно следующему:
declare @name varchar(20)
select @name = select top 1 SName from Trial.dbo.student
Если вы используете курсор, синтаксис должен выглядеть примерно так:
declare C cursor for select SName from Trial.dbo.student
open C
fetch next from C into @name
while @@fetch_status = 0
begin
/* do some work involving @name */
/* fetch the next row from the cursor */
fetch next from C into @name
end
close C
deallocate C
Вам, конечно, нужно DO поработать в цикле, конечно, если только вы на самом деле не пытались просто извлечь (случайную) строку из таблицы ученика.