在经典ASP中传递可选参数以存储过程

时间:2011-09-22 00:06:11

标签: asp-classic ado

我正在尝试从ASP页面在Access数据库中运行一些存储的查询。我想使用ADO Command对象来运行该过程,而不是简单地将字符串发送到数据库来执行。当我尝试创建要发送到存储过程的参数时,我的麻烦正在发生。我正在使用Command对象的'CreateParameter'方法。它需要5个可选参数,其中我只想使用两个;名称和值(分别为参数1和5)。

我尝试了以下方法来设置参数:

1)使用命名参数

command.Parameters.Append command.CreateParameter name:="name", value:="value"

2)在括号内使用命名参数

command.Parameters.Append command.CreateParameter(name:="name", value:="value")

3)省去我不需要的可选参数

command.Parameters.Append command.CreateParameter("name", , , , "value")

实现我想要做的事情的简单方法是什么,为什么我的语法在这些情况下会失败?我显然在这里遗漏了一些东西!

2 个答案:

答案 0 :(得分:2)

VBScript不支持带或不带括号的命名参数。为Command对象的CreateParameter方法传递(特定或空白)所需的所有参数。

对于问题中的第3部分,请看一下:

CreateParameter(
name`[optional],                              <- fits ("name")
type [optional, default = adEmpty],           <- NOT fits (type is not empty)
direction[Optional default = adParamInput],   <- fits (blank)
size [optional default = 0],                  <- NOT fits (at least 5 for "value")
value[optional]                               <- fits ("value")
)

因此,您应至少为文本值参数指定类型和大小。方向已经adParamInput

Const adVarChar = 200 ' From adovbs.inc or Ado TypeLib
command.Parameters.Append command.CreateParameter("name", adVarChar, , 5, "value")

答案 1 :(得分:0)

这是一个可以遵循的例子。

http://www.webconcerns.co.uk/asp/accessqueries/accessqueries.asp

另见

http://bytes.com/topic/asp-classic/answers/628368-running-access-stored-queries-parameters

记住访问使用存储的查询而非存储过程,因此存在一些差异。有关其他信息,请搜索

ASP使用参数存储查询 - .net