【问题标题】:Parameter object is improperly defined参数对象定义不正确
【发布时间】:2013-03-12 09:22:19
【问题描述】:

以下是我在经典 ASP 应用程序中的 VBScript 代码:

    Set newParam = command.CreateParameter(Name, ParamType, 1)
    newParam.Value = Value
    command.Parameters.Append(newParam)
    command.Parameters(Name) = Value

'Append' 行总是因以下错误而中断:

命令是否具有有效的活动连接或连接是否打开(连接到 Oracle 数据库)似乎没有区别。

“Name”、“ParamType”和“Value”参数值正确。

缺少什么?或者可能是错的?

谢谢

【问题讨论】:

  • 不需要第二行(newParam.Value = Value)
  • ParamType 的确切值是多少?您没有指定大小,这可能是您选择的数据类型所必需的。
  • 您是否考虑过 command.Parameters.Append 而不是 command.Parameters.Refresh ?这可能会为您节省很多精力。
  • 我还想研究另外两件事:1) 我看到许多调试器 (VS 2008) 报告了一条线。 IE。尝试验证这是否是错误行,而不是 CreateParameter。,以及 2) 是参数类型的常量,如果您使用常量,在范围内?

标签: asp-classic vbscript


【解决方案1】:

Append 指令中删除括号。在这种情况下,它们的含义是“按值传递参数”,而不是“参数列表”(参见this article)。还要把值赋值放在参数赋值之后。

Set newParam = command.CreateParameter(Name, ParamType, 1)
command.Parameters.Append newParam
newParam.Value = Value

您仍然收到Append 指令的错误吗?如果是这样,您的 NameParamType 参数有问题。

【讨论】:

  • 在调用 Subs 时删除括号一般来说是个好建议,但我不确定这会有所不同。无论您传递参数 ByVal 还是 ByRef,它仍然是对同一个 Parameter 对象的引用。
  • @CheranShunmugavel 很可能它不会产生影响(当我用一些样本值测试时它没有),但我还是会删除它们,只是为了安全起见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多