【问题标题】:Trying to pass a value from VBA to sql stored proc, getting improperly defined error试图将值从 VBA 传递到 sql 存储过程,得到不正确定义的错误
【发布时间】:2011-11-18 21:27:36
【问题描述】:

只是试图从我的 VBA 项目将 5 个字母的字符串值(即“SSIID”)传递给我的 sql 存储过程中的参数,但显然我混淆了类型或出现了问题。错误是:

参数对象定义不正确。

我在http://www.w3schools.com/ado/ado_datatypes.asp 查找了可比较的数据类型并尝试匹配但无济于事。有什么想法吗?

VBA

.CreateParameter("@Location", adVarChar, adParamInput, , "SSIID")

SQL 参数

@Location varchar

【问题讨论】:

  • varchar 参数的大小是多少,您使用的是哪个版本的 SQL Server?
  • 使用Sql 2005,varchar大小为30

标签: sql vba stored-procedures


【解决方案1】:

CreateParameter Method (ADO)

Size参数说明

如果在 Type 参数中指定可变长度数据类型,则 必须传递 Size 参数或设置 将参数对象附加到参数集合之前; 否则会出错。

例如

.CreateParameter("@Location", adVarChar, adParamInput, 5, "SSIID")

【讨论】:

    【解决方案2】:

    我遇到了类似的错误,但似乎没有任何效果。原来这是 SQL Server 中的数据类型问题:我的存储过程中的字符串定义为 NVARCHAR,而 VBA 从 EXCEL 发送的字符串是另一种数据类型。使用 strconv 没有帮助,所以最后我在存储过程中将 NVARCHAR 更改为 VARCHAR ,并且解决了它。

    迈克·肯尼

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多