declare @t INT = 1
declare @i INT = 1
while @t <= 5
BEGIN
while @i <= 40
BEGIN
set @i = @i + 1
END
set @t = @t + 1
select @t
END
결과는 @t=2
입니다. 내가 @i
으로 바꾸면 나는 @i=41
가된다. 왜 첫 번째 while 루프에 @variable
이 표시됩니까? 2 번 작동합니까? @t=6
이 표시되지 않아야합니까?while 루프는 어떻게 작동합니까?
내가 선택한 경우 @t
끝에 6이 표시되지만, 반복 결과가 모두 필요한 경우, 결국 @t
을 입력하면 다른 결과를 얻지 못할 경우에만 마지막 결과. 결과는 1,2,3,4,5,6 모두 @t
이고 최종 결과는 6으로 표시되어야합니다.
이것은 모든 @t에 대해 작성한 절차의 단순화 된 예입니다. 반복은 @i가 완전한 반복을하고, @t가 두 번째 반복을 위해 가야한다. @i는 계획대로 작동하지만 첫 번째 반복 후에 @t가 중단됩니다.
(@t = 1 인 경우 @i는 일부 테이블에서 열 1부터 40 행을 가져오고 @t = 2는 일부 테이블 ..ect에서 열 2에서 40 행을 가져 와서 @sql 문자열에 씁니다. 그녀는 루프가 깨지고 @t 루프로 들어간다. @t는 @sql 문자열을 실행해야한다. (예를 들어 뷰를 생성하므로 결국 6 개의 뷰가 있어야하지만 처음에는 @t 루프를 실행 한 후 . 휴식) 내가 알고있는 것처럼
한 번만 실행하면 첫 번째 루프에 두 번째 루프를 넣으려는 목적은 무엇입니까? –
모든 @t 반복에 대해 @i는 항상 매 반복을 만들고, 완료되면 @t는 다음 반복 라운드로 진행해야합니다. – theweeknd
네, 그러나 첫 번째 루프 'i'는 이미 최대 40 개를 더할 것이므로 두 번째 루프에서 그 영향은 무엇입니까? –