SQL Server 2008 R2 中@@ 和@ 的区别

MAK*_*MAK 0 sql-server sql-server-2008-r2

我正在使用 SQL Server 2008 R2。

我的问题是使用 @ 和 @@ 声明变量什么区别

在 SQL Server 2008 R2 中:

示例

语法 1:

Declare @a int = 1

select @a;
Run Code Online (Sandbox Code Playgroud)

语法 2:

Declare @@a int = 1

select @@a;
Run Code Online (Sandbox Code Playgroud)

两者都在这里做同样的工作。那为什么要使用双@@呢?

Vir*_*inh 6

没有区别。变量规则规定它们以“@”字符开头并遵循标识符规则。

由于“@”是一个有效的标识符字符,因此您可以在变量名称的开头使用任意数量的字符。但是,如果匹配与变量同名的系统函数,则查询将不会编译。

在以前版本的 SQL Server 中,@ 描述了一个局部变量,@@ 描述了一个全局变量。现在(SQL 2008)@@ 用于函数名称,因此@@ 不应用作参数名称。

在线图书参考http://msdn.microsoft.com/en-us/library/ms187953.aspx

如果有任何其他问题评论我:)