使用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