使用两个(或更多)"@"符号声明SQL Server变量会产生什么后果?

Jam*_*man 9 sql t-sql sql-server variables

通常,我会声明一个变量

declare @ConType int;
Run Code Online (Sandbox Code Playgroud)

或类似于此的东西.

最近在代码审查中,我遇到了使用双'@'的decalration(例如内置的@@ rowcount),即

declare @@ConType int;
Run Code Online (Sandbox Code Playgroud)

我注意到一个人可以把任何(合理)数量的'@'搞砸:

declare @@@@ConType int;
Run Code Online (Sandbox Code Playgroud)

变量应该运行正常.所以,以下应该工作:

declare @@@@ConType int;
set @@@@ConType = 1;
select @@@@ConType;
Run Code Online (Sandbox Code Playgroud)

很明显,上面的内容有点愚蠢,但我的问题是,以这种方式声明变量是否有任何意义?有没有什么副作用?我们应该避免这样做吗?

Mar*_*n B 15

变量名的第一个字符必须是at符号('@').之后的任何标志都没有任何特别的意义,并且被视为与任何其他角色一样.

但是,你应该避免声明以符号('@@')开头的变量,因为用MSDN的话来说:

某些Transact-SQL函数的名称以符号(@@)的double开头.为避免与这些功能混淆,不应使用以@@开头的名称.

当然,这意味着也不应使用以符号中的三个或更多开头的变量名称.

如果第二个字符不是at符号,我想在变量名后面的符号中使用它并不完全错误,但它看起来很混乱,所以它可能也不是一个好主意.