2010-01-07 9 views
18

Wpadłem dziś w dziwną sytuację, wykonując jakiś jednorazowy kod SQL. Ta pętla zagnieżdżona nie wydaje się uruchomić zewnętrzną pętlę: drukuje (0,0), (0,1), (0,2) i (0,3)Co jest nie tak z zagnieżdżoną pętlą WHILE w 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 

Am I czegoś brakuje rażąco oczywisty?

+1

Dzięki za to pytanie! Potrzebowałem dzisiaj wielkiego uśmiechu. ;-) –

Odpowiedz

33

Nie jesteś resetowania j var dla następnej iteracji

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

Doh! Mówiąc o oczywistym! – edosoft

+1

:) oni zawsze są –

+0

jeszcze zrobiłem ten sam błąd też! dzięki. – 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 

Pierwotny wynik jest 0/0 0/0 0/1 0/2 1/3 2/3

Cóż, powyższe odpowiedział po prostu dodać kod więcej szczegóły, lol ~