由于从未声明@A,因此sql server应该抛出错误,但是不会。这是为什么?
DECLARE @i int = 1; IF @i > 10 BEGIN DECLARE @A int = 100; END PRINT @A; // doesn't return any result
谢谢
SQL Server没有块级变量作用域。
每批/存储的过程等
从MSDN(我的粗体)
变量的范围是可以引用该变量的Transact-SQL语句的范围。变量的范围从声明的点一直持续到声明它的 批处理 或 存储过程 的末尾。