使用VBA从Excel中调用的存储过程中的SELECT和UPDATE

我创build了一个存储过程,涉及一个简单的UPDATE,然后SELECT语句,在SSMS中工作正常 – 更新工作和select产生一个logging集。

问题是当我尝试:

Set rs = New ADODB.Recordset 'works fine conn.Open sConnString 'works fine Set rs = conn.Execute("EXEC uspUpdateManual") 

我得到一个'操作不允许当对象closures3704'错误。 如果我注释掉存储过程的更新部分,select可以正常工作,logging集将被放入Excel中。

SP:

 ALTER PROCEDURE [dbo].[uspUpdateManual] AS BEGIN TRANSACTION UPDATE Table1 SET ACC = '9' COMMIT TRANSACTION BEGIN TRANSACTION SELECT * FROM Table1 COMMIT TRANSACTION END GO 

有没有办法同时做更新和select,还是我必须将它们分成两个存储过程?

我认为这里可能出现的问题与交易有关,请问您能显示程序代码吗? 您可以尝试在事务中包装更新,并在另一个中select,如下所示:

 BEGIN TRANSACTION UPDATE... COMMIT TRANSACTION BEGIN TRANSACTION SELECT... COMMIT TRANSACTION