我见过很多函数,在每个函数上我看到它们的末尾都有括号()
,如
SELECT SCOPE_IDENTITY();
SELECT IDENT_CURRENT('TableName');
但为什么某些功能不使用with parenthesis()
功能
SELECT @@IDENTITY;
答案 0 :(得分:2)
@@ xxxxx是没有参数的系统函数,应将其视为只读变量
答案 1 :(得分:2)
我相信这些使用被称为“服务器变量”,因此具有“类似于变量”的语法而不是函数语法。从那以后,它们被重新定义为函数,但为了向后兼容性而保留了较旧的语法。
不幸的是,我目前无法找到任何在线资源来支持这一说法,我认为“服务器变量”定义已经在2000版本的产品中退役。
如果我们以@@ROWCOUNT
为例。在SQL Server 2000 BOL中,它被描述为:
返回受最后一个语句影响的行数。
...
此变量已设置...
(我强调)。
将其与current documentation进行比较,ROWCOUNT_BIG
指的是它的值已设置但现在避免将其称为变量(或函数)。当然,它是现代的,增强的,不必支持具有正常功能语法的向后兼容性兄弟http://michiel.vanbaak.eu/2016/02/27/sending-big-email-using-google-php-api-client-and-gmail/。并明确称为函数。
我不相信Microsoft自2000年之前就使用@@
变量语法引入了任何 new 函数。