declare @i int
set @i=5
while @i>0
begin
declare @n int
set @i=@i-1
set @n=isnull(@n,0) + @i
end
select @n
这个也一样。没有测试之前我两种理解方式:1,不报错
像c#之类语言一样,循环体内的都是一个局部对象(或变量)2,报错
像basic一样,变量重复定义。
set @i=5
while @i>0
begin
declare @n int
set @i=@i-1
set @n=isnull(@n,0) + @i
end
select @n
这个也一样。没有测试之前我两种理解方式:1,不报错
像c#之类语言一样,循环体内的都是一个局部对象(或变量)2,报错
像basic一样,变量重复定义。
2>即便变量的作用域不是当前批处理而是循环内,声明了多次,但是事实上却只有一个@t,所有的数据都插入到这一个表里面了,也不应该