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

Ton*_*oni 4 sql-server vba stored-procedures ms-access-2010

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

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

我一直在使用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
Run Code Online (Sandbox Code Playgroud)

无论我尝试过什么,我都会在第一个参数上出错.我怀疑这很简单.在此先感谢您的帮助!

Gor*_*son 5

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

cmd.Parameters.Append cmd.CreateParameter("@IngString", adVarChar, adParamOutput, 255)
Run Code Online (Sandbox Code Playgroud)