我需要抑制从 SQL 函数输出的消息。如1 row affected
. 我不能使用SET NOCOUNT
,因为它在函数中无效。
有人知道这样做的方法吗?
谢谢。
编辑
我试图限制背景信息,试图将问题归结为本质。但我会扩大。我正在使用 MSSQL2005 和 NHibernate 将记录插入到 SQL 表中。在表上,我有一个计算列,它运行正在报告的函数1 row affected
。
我真的不想编辑该过程的 NHibernate 部分,但这可能是不可避免的。
我需要抑制从 SQL 函数输出的消息。如1 row affected
. 我不能使用SET NOCOUNT
,因为它在函数中无效。
有人知道这样做的方法吗?
谢谢。
编辑
我试图限制背景信息,试图将问题归结为本质。但我会扩大。我正在使用 MSSQL2005 和 NHibernate 将记录插入到 SQL 表中。在表上,我有一个计算列,它运行正在报告的函数1 row affected
。
我真的不想编辑该过程的 NHibernate 部分,但这可能是不可避免的。
返回“(受影响的 1 行)”的函数将成为批处理中更大查询的一部分。SET NOCOUNT ON
在函数中有没有意义
你需要这样做:
SET NOCOUNT ON;
SELECT * FROM MyUDFTVF();
请注意,存储过程只是一个包装器
CREATE PROC Whatever
AS
SET NOCOUNT ON;
SELECT * FROM MyUDFTVF();
GO
SET NOCOUNT ON
通常需要停止触发器等破坏客户端代码:为什么在这里需要它?
该nocount
设置在功能中不可用。
存储过程允许您设置nocount
. 因此,将函数转换为存储过程将解决问题。
否则,调用代码将不得不设置nocount
。这应该不难,但如果在许多地方使用该功能可能会很乏味。
PS如果您发布需要抑制计数消息的原因,也许我们可以提供更多解决方案。