Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

客户端调用Sqlserver存储过程时无记录集返回

时 间:2013-05-08 08:53:12
作 者:杏林求真   ID:24722  城市:合肥
摘 要:如题
正 文:

用VB做的客户端程序在调用服务器的存储过程时有的存储过程可以返回记录集,而有的无法返回记录集,这是为什么呢?

通过对存储过程的排查,发现问题在于结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息。也就是需要加上set nocount on语句。

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 指定的设置是在执行或运行时生效,而不是在分析时生效。

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

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



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助