Sql 处理游标时出错

Sql 处理游标时出错,sql,sql-server,tsql,sql-server-2008,Sql,Sql Server,Tsql,Sql Server 2008,代码: 有人能帮我解决这个错误吗 Msg 207,16级,状态1,第1行列名“name”无效 根据您给出的示例,您的光标用法只是从student表中拖出一行(随机)。这在功能上等同于以下内容: declare C cursor for SELECT name FROM [Trial].[dbo].[student] declare @name varchar(20) set @name = '' open C fetch from c i

代码:

有人能帮我解决这个错误吗


Msg 207,16级,状态1,第1行列名“name”无效


根据您给出的示例,您的光标用法只是从
student
表中拖出一行(随机)。这在功能上等同于以下内容:

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
如果您使用的是游标,那么语法应该更像这样:

declare @name varchar(20)
select @name = select top 1 SName from Trial.dbo.student

当然,您需要在循环中做一些工作,除非您实际上只是试图从学生表中简单地提取(随机)行。

Msg 207,级别16,状态1,第1行无效列名“name”。我得到了上面的错误。感谢您的回复。我相信错误是告诉您在
[Trial].[dbo].[student]
表中没有“name”列是的,在student表中它不是name,而是SName。另外,这个光标的意义是什么?@Pearl-因为这不是一个写得很好或经过深思熟虑的问题。阅读错误消息可以非常清楚地给出答案。即使您试图选择一条随机记录,也更容易从表ORDER BY NEWID()中选择前1列
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