declare @i int
declare @skool float
declare schoolCursor cursor for
select distinct choice from tempstuas
open schoolCursor
fetch next from schoolCursor into @skool
while @@fetch_status = 0
begin
while @i < 20
begin
update top(1) tempstuas set cnt=@i where cnt = '' and cat = 1 and choice=@skool
update top(1) tempstuas set cnt=@i where cnt = '' and cat = 2 and choice=@skool
update top(1) tempstuas set cnt=@i where cnt = '' and cat=3 and choice=@skool
set @i = @i + 1
end
fetch next from schoolCursor
end
close schoolCursor
deallocate schoolCursor
这基本上是通过一个返回单个位置编号的游标。位置编号存储为光标中的变量,我需要在while循环中使用,该循环遍历特定的次数(20)。我返回的只是光标在整个位置编号列表中进行,但没有使用更新语句迭代while循环。
答案 0 :(得分:2)
游标和while循环通常是解决问题的错误方法,我现在没有时间弄清楚你正在做什么,建议基于集合的解决方案但是认真地你需要开始思考集合和停止思考循环。
但问题是@i为null,null不是&lt; 20。
看到我的理论测试
declare @i int
if @i<20 print'hi'
else print 'bye'