我正在阅读一些存储过程,我偶然发现了一些声明如下的变量:
set @@cstr1 = @@cKod1
set @@pom1 = 1
Run Code Online (Sandbox Code Playgroud)
'@@'有什么作用?与'@'有什么不同?
以single @前缀开头的局部变量,变量的范围是可以引用变量的Transact-SQL语句的范围.变量的范围从声明它的位置延迟到声明它的批处理或存储过程的结尾.
全局变量以@@前缀开头,您不需要声明它们,因为服务器不断维护它们,它们是系统定义的函数而不是变量,并且与变量没有相同的行为.所有全局变量表示特定于服务器或当前用户会话的信息.一些常用的是@@ ERROR,@ @ IDENTITY,@@ VERSION.
更新: 使用@@前缀声明任何变量(系统定义除外)实际上是局部变量.