Ответ 1
Вы не сбрасываете свой j var для следующей итерации
set @i = @i + 1
set @j = 0
Сегодня я столкнулся с такой странной ситуацией, когда делал какой-то одноразовый код 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
Я пропустил что-то явно очевидное?
Вы не сбрасываете свой j var для следующей итерации
set @i = @i + 1
set @j = 0
Вы не перезагружаете @j.
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 ~