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
. 为什么@variable
在第一个while循环中显示2,它会刹车吗?它不应该显示@t=6
吗?
如果我把选择@t
放在最后,它会显示 6,但是如果你需要迭代的每个结果,如果你把它放在@t
最后,你不会得到其他结果,你只会得到最后一个结果。我希望结果 1、2、3、4、5、6 全部通过@t
,最终结果应该只显示 6。
这是我编写的过程的简化示例,对于每次@t 迭代,@i 都会进行一次完整迭代,然后 @t 应该进行第二次迭代。@i 按计划工作,但 @t 在第一次迭代后中断。
(如果 @t = 1 ,@i 从某个表的第 1 列获取 40 行,@t = 2 它从某个表的第 2 列获取 40 行..ect)并将其写入 @sql 字符串,当她达到 40 while循环中断并进入@t循环,@t应该执行@sql字符串(例如它创建一个视图,所以最后我应该有6个视图,但在第一次执行之后@t循环中断。)