存储过程里的'set nocount on'是什么意思?

zhengxy22 2008-11-06 08:59:20
存储过程里的'set nocount on'是什么意思?
...全文
3624 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenxiaoyan_123 2010-09-15
  • 打赏
  • 举报
回复
帮助文档看不懂,可以可以说的通俗易懂点啊!
jenny1004 2010-08-17
  • 打赏
  • 举报
回复
学习下,嘿嘿
spring21st 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Yang_ 的回复:]
以下是帮助内容:

阻止在结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息。

Transact-SQL 语法约定

语法

SET NOCOUNT { ON | OFF }


备注
当 SET NOCOUNT 为 ON 时,不返回计数。当 SET NOCOUNT 为 OFF 时,返回计数。

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。

当 SET NOCOUNT 为 ON 时,将不向客户端发送存储过程中每个语句的 DONE_IN_PROC 消息。如果存储…
[/Quote]

同意楼上的说法。很全面
fcuandy 2008-11-06
  • 打赏
  • 举报
回复

create proc p
as
begin
delete from tb where ..
select * from tb..
end

前端程序用ado或.net的datareader 访问时,第一个记录集是空集,第二个集才是真正要的,当不清楚时就会疑惑为什么得不到行集。其实用recordset.nextrecordset和datareader.nextresult都可以得到第二行集。

最好的办法就是设置set nocount on
Yang_ 2008-11-06
  • 打赏
  • 举报
回复
以下是帮助内容:

阻止在结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息。

Transact-SQL 语法约定

语法

SET NOCOUNT { ON | OFF }


备注
当 SET NOCOUNT 为 ON 时,不返回计数。当 SET NOCOUNT 为 OFF 时,返回计数。

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。

当 SET NOCOUNT 为 ON 时,将不向客户端发送存储过程中每个语句的 DONE_IN_PROC 消息。如果存储过程中包含一些并不返回许多实际数据的语句,网络通信流量便会大量减少,因此,将 SET NOCOUNT 设置为 ON 可显著提高性能。

SET NOCOUNT 指定的设置是在执行或运行时生效,而不是在分析时生效。

权限
要求具有 public 角色的成员身份。

示例
以下示例将禁止显示受影响的行数的消息。

复制代码
USE AdventureWorks;
GO
SET NOCOUNT OFF;
GO
-- Display the count message.
SELECT TOP(5)LastName
FROM Person.Contact
WHERE LastName LIKE 'A%';
GO
-- SET NOCOUNT to ON to no longer display the count message.
SET NOCOUNT ON;
GO
SELECT TOP(5) LastName
FROM Person.Contact
WHERE LastName LIKE 'A%';
GO
-- Reset SET NOCOUNT to OFF
SET NOCOUNT OFF;
GO

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧