Stored procedures 参数的类型与存储过程参数不符

Stored procedures 参数的类型与存储过程参数不符,stored-procedures,parameters,asp-classic,vbscript,adodb,Stored Procedures,Parameters,Asp Classic,Vbscript,Adodb,我使用一个存储过程返回一个产品价格,其中我向它发送了两个参数,一个是stockcode,另一个是customer number。当我运行此命令时,会出现以下错误 ADODB.Command error '800a0bb9' Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. 我发送的两个参数都是字符串,它们的长度都可能不同 代码如下 bnno

我使用一个存储过程返回一个产品价格,其中我向它发送了两个参数,一个是stockcode,另一个是customer number。当我运行此命令时,会出现以下错误

ADODB.Command error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict 
with one another. 
我发送的两个参数都是字符串,它们的长度都可能不同

代码如下

bnno = request("bn")
stockcode = request("ht")

dim prices

   Set cn = Server.CreateObject("ADODB.Connection")
   cn.Open "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=stock;"&_
"User Id=username;Password=password;"
   Set cmd = Server.CreateObject("ADODB.Command")
   Set cmd.ActiveConnection = cn
   Set prices = Server.CreateObject("ADODB.RecordSet")
   cmd.CommandText = "sp_stockdata"
   cmd.CommandType = adCmdStoredProc
   cmd.Parameters.Append cmd.CreateParameter("htcode", adlongvarchar, _
      adParamReturnValue)
   cmd.Parameters.Append cmd.CreateParameter("bn", adlongvarchar, _
      adParamInput)

   cmd("htcode") = stockcode
   cmd("bn") = bnno

   set prices = cmd.Execute

有人能帮我更改此代码,以便我可以将文本发送到参数吗???

adParamReturnValue参数只能是数字。要返回其他类型的数据,请阅读(并选择您的sqlserver版本)

您以错误的方式使用存储过程。如中所述,
adParamReturnValue
表示“使用存储过程返回值”,它只能是数字代码

看起来您真正想要的是输出参数,即2 aka
adParamOutput
。您也不能像这样将输出参数分配给局部变量。
经过二读,我明白上面的说法是不正确的,留给其他可能会以类似方式感到困惑的人

据我所知,您真正想要的是只发送两个输入参数,因此正确的代码应该是:

cmd.CommandText = "sp_stockdata"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("htcode", adLongVarChar, adParamInput, Len(stockcode), stockcode)
cmd.Parameters.Append cmd.CreateParameter("bn", adLongVarChar, adParamInput, Len(bnno), bnno)
set prices = cmd.Execute

请注意,在使用
adLongVarChar
type时,还必须指定数据长度。

存储过程需要哪些数据类型?