2010-01-07 109 views
18

我今天遇到了一個奇怪的情況,在做一些一次性sql代碼。此嵌套循環似乎並不運行外循環:它打印(0,0),(0,1),(0,2)和(0,3)SQL中嵌套的WHILE循環有什麼問題

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 

我失去的東西大搖大擺明顯?

+1

感謝您的Q!今天我需要一個燦爛的笑容。 ;-) – 2010-01-07 13:55:23

回答

33

你是不是重置ĴVAR爲下一次迭代

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

Doh!說起來顯而易見! – edosoft 2010-01-07 13:40:13

+1

:)他們總是 – 2010-01-07 13:40:51

+0

但我也犯了同樣的錯誤!謝謝。 – Sijav 2015-04-01 13:37:32

0
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

好了,上面回答說,只是爲了更添加代碼細節,大聲笑〜