游标while循环中的While循环 - SQL

时间:2012-05-10 14:04:40

标签: sql

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循环。

1 个答案:

答案 0 :(得分:2)

游标和while循环通常是解决问题的错误方法,我现在没有时间弄清楚你正在做什么,建议基于集合的解决方案但是认真地你需要开始思考集合和停止思考循环。

但问题是@i为null,null不是&lt; 20。

看到我的理论测试

declare @i int

if @i<20 print'hi'
else print 'bye'