Ошибка в обработке курсора - PullRequest
0 голосов
/ 13 июля 2011

Код:

declare C  cursor for SELECT name 
                        FROM [Trial].[dbo].[student]

declare @name varchar(20)
set @name = ''
open C
  fetch from c into @name 
close C
Select @name

Может ли кто-нибудь помочь мне решить эту ошибку:

Сообщение 207, Уровень 16, Состояние 1, Строка 1 Неверное имя столбца «имя».

1 Ответ

1 голос
/ 09 августа 2011

Использование вашего курсора из приведенного вами примера просто вытягивает (случайную) строку из таблицы 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 поработать в цикле, конечно, если только вы на самом деле не пытались просто извлечь (случайную) строку из таблицы ученика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...