日期:2014-05-18  浏览次数:20453 次

MSADO中调用同时存在Update语句和Select语句的问题
Sql server版本是2008,使用ms的Ado com组件,执行某存储过程,里面先是一条update语句,然后是select出记录集,单独在数据库执行没问题,在程序中跟踪发现GetRecordCount时异常,之后尝试去掉update语句,程序执行又正常了,这个问题困扰很久了,发现只要是同时存在update或insert之类的语句和select同时存在时,记录集就会失效,之前的解决办法只是简单的分开这些语句成多个存储过程,但是又希望这样能事务的执行,所以还是得连在一起,有什么好办法解决吗?

------解决方案--------------------
试试在存储过程开始的地方定义
也就是update之前定义
set nocount on
update之后打开(select之前)
set nocount off
------解决方案--------------------
我存储过程都是这样开头的
IF OBJECT_ID('dbo.*****') IS NOT NULL
BEGIN
DROP PROCEDURE dbo.*****
END
go
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET NOCOUNT ON
GO
create proc [dbo].[*****]


没有遇到你说的情况. 我也是ADO调用的
------解决方案--------------------
探讨
我存储过程都是这样开头的
IF OBJECT_ID('dbo.*****') IS NOT NULL
BEGIN
DROP PROCEDURE dbo.*****
END
go
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET NOCOUNT ON
GO
create proc [dbo].[*****]


没有遇到你说的……