Tsql 在用VBA从Excel调用的存储过程中选择并更新

Tsql 在用VBA从Excel调用的存储过程中选择并更新,tsql,excel,vba,Tsql,Excel,Vba,我创建了一个存储过程,其中包含一个简单的UPDATE和SELECT语句,该语句在SSMS中运行良好—UPDATE起作用,SELECT生成一个记录集 问题是当我尝试时: Set rs = New ADODB.Recordset 'works fine conn.Open sConnString 'works fine Set rs = conn.Execute("EXEC uspUpdateManual") 我得到一个“对象关闭时不允

我创建了一个存储过程,其中包含一个简单的UPDATE和SELECT语句,该语句在SSMS中运行良好—UPDATE起作用,SELECT生成一个记录集

问题是当我尝试时:

Set rs = New ADODB.Recordset             'works fine
conn.Open sConnString                    'works fine
Set rs = conn.Execute("EXEC uspUpdateManual")
我得到一个“对象关闭时不允许操作3704”错误。如果我注释掉存储过程的更新部分,select本身就可以正常工作,记录集将被放入Excel中

SP:


有没有办法一次完成更新和选择,或者我必须将它们分为两个存储过程?

我想这里的问题可能是事务,请您显示过程代码好吗?。您可以尝试在一个事务中包装更新,并在另一个事务中选择,如下所示:

BEGIN TRANSACTION

UPDATE...

COMMIT TRANSACTION

BEGIN TRANSACTION

SELECT...

COMMIT TRANSACTION

谢谢你的建议,我最初也这么想,并尝试包装更新。我也尝试过包装select,但仍然得到相同的错误。我已经在问题中添加了过程代码。或者,您是否尝试将它们都包装在一个事务中?当它们是单个事务时仍然会出现相同的错误我最终使用了两个单独的过程,这有点混乱,但它可以工作。你还有什么建议我可以试试吗?
BEGIN TRANSACTION

UPDATE...

COMMIT TRANSACTION

BEGIN TRANSACTION

SELECT...

COMMIT TRANSACTION