我在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
无论我尝试过什么,我都会在第一个参数上出错。我怀疑这很简单。在此先感谢您的帮助!
答案 0 :(得分:5)
字符串参数需要定义为(最大)长度,例如
cmd.Parameters.Append cmd.CreateParameter("@IngString", adVarChar, adParamOutput, 255)
答案 1 :(得分:0)
感谢所有帮助我们解决问题的人。事实证明,这是我的命令对象的问题,而不是SP或VBA(除了需要varchar参数的长度 - 感谢,Gord)。现在一切正常!