我应该为函数添加 set nocount 吗?

Gan*_*er7 4 sql-server t-sql functions set-returning-functions

我一直在阅读有关所有触发器和过程的好处,除非您使用 DONE_IN_PROC,否则实现了“set nocount on”。

我有一个从更新触发器调用的标量值函数,用于计算多个表中的值的总和。

搜索 msdn 和过去的文章,我无法找到使用 set nocounton 的函数的明确示例。

包含或排除“set nocount on”对函数有什么影响?函数中是否有一点或代码异味应该表明添加了 set nocount on?

Joe*_*ish 6

函数无法将数据返回给客户端,所以我想不出任何使用SET NOCOUNT ON. 如果你尝试给它添加一个函数,你会得到一个错误。SQL Server 认为它会导致副作用

函数体

指定一系列 Transact-SQL 语句(它们一起不会产生修改表等副作用)定义函数的值。

例如,以下代码抛出错误:

CREATE FUNCTION X_JRO_TEST() 
RETURNS INT
AS
BEGIN
SET NOCOUNT ON;
RETURN 1;
END;
Run Code Online (Sandbox Code Playgroud)

消息 443,级别 16,状态 15,过程 X_JRO_TEST,第 5 行

在函数中无效使用副作用运算符“SET OPTION ON”。

  • @McNets我不认为标量值函数可以,但是 SET NOCOUNT ON 不会阻止 @@ROWCOUNT 工作。 (2认同)