2010-01-07 67 views
18

Tôi đã gặp một tình huống kỳ lạ vào hôm nay làm một số mã sql một lần. Vòng lặp lồng nhau này dường như không chạy vòng lặp bên ngoài: nó in (0,0), (0,1), (0,2) và (0,3)Điều gì là sai với vòng lặp WHILE lồng nhau trong SQL

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 

Tôi thiếu một thứ gì đó blatantly hiển nhiên?

+1

Cảm ơn bạn! Tôi cần một nụ cười lớn hôm nay. ;-) –

Trả lời

33

Bạn chưa đặt j var của bạn cho phiên bản kế tiếp

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

Doh! Nói rõ ràng! – edosoft

+1

:) chúng luôn là –

+0

nhưng tôi cũng đã phạm sai lầm tương tự! cảm ơn. – Sijav

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 

Kết quả ban đầu là 0/0 0/0 0/1 0/2 1/3 2/3

Vâng, ở trên đã trả lời, chỉ cần thêm mã để biết thêm chi tiết, lol ~

Các vấn đề liên quan