小编典典

为什么即使条件评估为false,也要在IF语句中创建声明的变量?

sql

由于从未声明@A,因此sql server应该抛出错误,但是不会。这是为什么?

DECLARE @i int = 1;
IF @i > 10
BEGIN
  DECLARE @A int = 100;
END

PRINT @A; // doesn't return any result

谢谢


阅读 184

收藏
2021-04-07

共1个答案

小编典典

SQL Server没有块级变量作用域。

每批/存储的过程等

从MSDN(我的粗体)

变量的范围是可以引用该变量的Transact-SQL语句的范围。变量的范围从声明的点一直持续到声明它的 批处理存储过程 的末尾。

2021-04-07