示例:
WHILE (1 > 0)
BEGIN
DECLARE @i BIGINT
IF @i is null
SET @i = 1
PRINT @i
SET @i = @i + 1
IF @i > 10
BREAK
END结果:1,2,3,4,5,6,7,8,9,10
从上面示例的结果中可以看出,在循环体中去重新DECLARE声明变量@i是不会重置@i为NULL的还延续这上次执行的结果,这里变量的声明和C#是有区别的,SQL的变量作用域是本次执行的全过程,比如在一个存储过程中执行多条语句,声明的变量在这个存储过程中都是有效的,只有使用SET,SELECT去主动赋值才能发生变化.