SQL中这个嵌套的WHILE循环有什么问题

时间:2010-01-07 13:32:52

标签: sql tsql

今天我遇到了一些奇怪的情况,做了一些一次性的sql代码。这个嵌套循环似乎不运行外部循环:它打印(0,0),(0,1),(0,2)和(0,3)

declare @i int, @j int
select @i = 0, @j = 0
while @i < 3 begin
    while @j < 3 begin
        select @i as i, @j as j
        set @j = @j + 1
    end
    set @i = @i + 1
end

我错过了一些明显的东西吗?

3 个答案:

答案 0 :(得分:36)

您没有为下一次迭代重置j var

 set @i = @i + 1
 set @j = 0

答案 1 :(得分:5)

您没有重置@j。

答案 2 :(得分:1)

declare @i int, @j int
select @i = 0, @j = 0 --<- Wrong place set @j
while @i < 3 
begin
    select @i, @j --<-test print, then you will know what happened~
    --set @j = 0 --<- Right place to set @j
    while @j < 3 
    begin
        select @i as i, @j as j
        set @j = @j + 1
    end
    set @i = @i + 1
end

原来的结果是 0/0 0/0 0/1 0/2 1/3 2/3

嗯,以上回答,只需添加代码以获取更多详细信息,lol~