通常我会声明一个变量
declare @ConType int;
或者类似的东西.
最近在代码审查中,我遇到了一个使用双“@”的脱墨(例如,内置@@ rowcount),即
declare @@ConType int;
我注意到可以扼杀任何(合理)数量的“@”:
declare @@@@ConType int;
而变量应该运行正常.所以,以下工作应该是:
declare @@@@ConType int; set @@@@ConType = 1; select @@@@ConType;
Obvoiusly,上面是有点愚蠢,但我的问题是,是否有这样的方式来声明变量有什么意义?有没有什么副作用?我们应该避免这样做吗?
解决方法
变量名称的第一个字符必须是一个at符号(‘@’).任何在之后的标志没有任何特别的意义,被视为像任何其他人物一样.
但是,您应该避免声明以符号(@@)开头的变量,因为用MSDN表示:
Some Transact-sql functions have names that start with double at signs (@@). To avoid confusion with these functions,you should not use names that start with @@.
当然,这意味着也不能使用在标志处以三个或更多开头的变量名.
我猜,如果第二个字符不是一个标志,那么在变量名中稍后使用的符号并不完全错误,但是它看起来很混乱,所以这可能不是一个好主意.