SQL

2010-01-07 14 views
18

iç içe geçmiş WHILE döngüsünde yanlış olan şey, bugün tek seferlik bir sql kodu kullanan garip bir duruma düştüm. Bu iç içe döngü dış döngü çalıştırmak için görünmüyor:,, bu yazdırır (0,2) (0,1) (0,0) ve (0,3)SQL

Ben pervasızca bir şey eksik
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 

Am açık?

+1

Bu Q için teşekkürler! Bugün kocaman bir gülüşe ihtiyacım vardı. ;-) –

cevap

33

Sen @j sıfırlamayı değil sonraki yineleme

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

Doh! Açıkça konuşmak! – edosoft

+1

:) onlar her zaman –

+0

ama ben de aynı hatayı yaptım! Teşekkürler. – Sijav

4

için j Var sıfırlamayı değildir.

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 

orijinal sonuç 2/3

Eh, 0/0 0/0 0/1 0/2 1/3, sadece daha fazla kod eklemek cevaplandırılması yukarıda detay, lol ~