使用 Access VBA 从 SQL 服务器存储过程中获取 varchar OUTPUT 参数

Using Access VBA to get varchar OUTPUT parameter from SQL Server stored procedure

我在 SQL 服务器中有以下存储过程,可以在 SQL 服务器中调用它:

CREATE PROCEDURE uspRecipeNote
    @IngString varchar(255) OUTPUT,
    @MixID int = NULL
AS 
    SET NOCOUNT ON;
    SET @IngString = dbo.ufnRecipeNote(@MixID);

几个月来我一直在 Access 中使用 VBA 来调用存储过程,从来没有遇到过问题,但是我尝试了几种可能性,但被难住了,出现以下错误之一,具体取决于我所拥有的尝试过:

"Parameter object is improperly defined. Inconsistent or incomplete information was provided." "Procedure or function uspRecipeNote has too many arguments specified."

这是我目前在 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

无论我如何尝试,第一个参数都会出错。我怀疑这很简单。在此先感谢您的帮助!

字符串参数需要定义一个(最大)长度,例如

cmd.Parameters.Append cmd.CreateParameter("@IngString", adVarChar, adParamOutput, 255)

感谢所有帮助我解决问题的人。事实证明这是我的命令对象的问题,而不是 SP 或 VBA(除了需要 varchar 参数的长度 - 谢谢,Gord)。现在一切正常!