You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MS Access VBA中通过直通查询获取存储过程输出参数?

能否通过直通查询运行带输入输出参数的存储过程?如何在MS Access VBA中获取输出参数值?

我需要通过直通查询运行一个带输入、输出参数的存储过程,该过程用于插入新记录,我要获取新插入记录的ID。

我的存储过程代码如下:

ALTER PROCEDURE [dbo].[sp_two_Insert]
    @woTitle nvarchar(255),
    @woWriter int,
    @woDate date,
    @woid int = 0 OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO dbo.two (woTitle, writtenby, wodate)
    VALUES (@woTitle, @woWriter, @woDate);
    
    SELECT @woid = SCOPE_IDENTITY();
END

我尝试了两种方案,均遇到崩溃问题:

  • 尝试1:参考相关方案后,运行VBA时会在Set rs = ptq.OpenRecordset行崩溃,程序会无限创建新记录,只能通过任务管理器强制退出。
  • 尝试2:参考另一方案后,同样在Set rs = rs.NextRecordset行崩溃,现象和尝试1完全一致。

另外有方案建议插入后单独运行第二个存储过程获取ID,但我认为该方案不可行——这样获取到的ID无法保证是本次插入操作生成的记录ID。

导致崩溃的VBA代码如下:

Option Compare Database
Option Explicit

Sub ptqTest()

Dim cdb As DAO.Database
Dim rs As DAO.Recordset

Set cdb = CurrentDb
Set rs=cdb.OpenRecordset("qPtMyPassThroughQ") '此处MS Access崩溃

rs.Close
Set rs = Nothing
Set cdb = Nothing

End Sub

提前感谢各位解答!

内容的提问来源于stack exchange,提问作者mechanicalMuse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:01:12