2011-07-13 80 views
-3

代碼:錯誤處理光標

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 

可以在任何一個可以幫助我解決這個錯誤:

Msg 207, Level 16, State 1, Line 1 Invalid column name 'name'.

+0

消息207,級別16,狀態1,行1無效的列名稱'名稱'。我有上面的錯誤。 感謝您的迴應。 – Shine

+4

我相信這個錯誤告訴你在[[Trial]。[dbo]中沒有「name」列。[student]'表 –

+0

是的,它的名字不是它在學生表中的SName。 Thanku – Shine

回答

1

你的光標使用情況,從你給的例子中,簡單地拉動一個(隨機)的行來自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一些工作在循環中,當然,除非你真的試圖簡單地從學生表中拉出(隨機)行。

+0

即使您試圖選擇一個隨機記錄,也只需選擇TOP 1列FROM ORDER BY NEWID() –