用VB做的客戶端程序在調(diào)用服務(wù)器的存儲(chǔ)過(guò)程時(shí)有的存儲(chǔ)過(guò)程可以返回記錄集,而有的無(wú)法返回記錄集,這是為什么呢?
通過(guò)對(duì)存儲(chǔ)過(guò)程的排查,發(fā)現(xiàn)問(wèn)題在于結(jié)果集中返回可顯示受 Transact-SQL 語(yǔ)句或存儲(chǔ)過(guò)程影響的行計(jì)數(shù)的消息。也就是需要加上set nocount on語(yǔ)句。
SET NOCOUNT { ON | OFF }
備注 當(dāng) SET NOCOUNT 為 ON 時(shí),不返回計(jì)數(shù)。當(dāng) SET NOCOUNT 為 OFF 時(shí),返回計(jì)數(shù)。 即使當(dāng) SET NOCOUNT 為 ON 時(shí),也更新 @@ROWCOUNT 函數(shù)。
當(dāng) SET NOCOUNT 為 ON 時(shí),將不向客戶端發(fā)送存儲(chǔ)過(guò)程中每個(gè)語(yǔ)句的 DONE_IN_PROC 消息。如果存儲(chǔ)過(guò)程中包含一些并不返回許多實(shí)際數(shù)據(jù)的語(yǔ)句,網(wǎng)絡(luò)通信流量便會(huì)大量減少,因此,將 SET NOCOUNT 設(shè)置為 ON 可顯著提高性能。
SET NOCOUNT 指定的設(shè)置是在執(zhí)行或運(yùn)行時(shí)生效,而不是在分析時(shí)生效。
示例
以下示例將禁止顯示受影響的行數(shù)的消息。 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 |
|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó)
( 粵ICP備10043721號(hào)-1 )
GMT+8, 2025-7-13 08:23 , Processed in 0.087766 second(s), 22 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.