【发布时间】:2016-07-21 13:42:12
【问题描述】:
我在 SQL Server 中有以下存储过程,可以在 SQL Server 中正常调用它:
CREATE PROCEDURE uspRecipeNote
@IngString varchar(255) OUTPUT,
@MixID int = NULL
AS
SET NOCOUNT ON;
SET @IngString = dbo.ufnRecipeNote(@MixID);
几个月来,我一直在 Access 中使用 VBA 调用存储过程,从未遇到过问题,但尝试了几种可能性,但我很困惑,根据我的尝试,遇到以下错误:
“参数对象定义不正确。提供的信息不一致或不完整。” “过程或函数 uspRecipeNote 指定了太多参数。”
这是我目前在 VBA 中的内容:
Set cmd.ActiveConnection = cn
cmd.CommandTimeout = 0
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "uspRecipeNote"
'add parameters
cmd.Parameters.Append cmd.CreateParameter("@IngString", adVarChar, adParamOutput)
cmd.Parameters.Append cmd.CreateParameter("@MixID", adInteger, adParamInput, , intMixID)
cmd.Execute
无论我尝试了什么,第一个参数都会出错。我怀疑这很简单。提前感谢您的帮助!
【问题讨论】:
-
您是否尝试过将输出参数放在 SP 的最后而不是第一个?
-
是的,这是我的典型做法,但我将它们转换为我的尝试之一。
-
当我输入上面的内容时,VBA 会自动插入一个“;”如下:Debug.Print cn.Execute; "uspRecipeNote" & intMixID
-
没问题。我尝试了几个使用括号的选项,但无济于事。当我尝试上面列出的内容时,我得到“程序或函数‘uspRecipeNote’需要参数‘@MixID’,未提供。”
-
您也可以使用
Execute代替ADODB.Commands并放入记录集Dim rs as New ADODB.Recordset然后rs = connection_name.Execute ("EXEC uspRecipeNote @IngString OUTPUT, " & intMixID & ";")。
标签: sql-server vba stored-procedures ms-access-2010