【问题标题】:How to pass multiple values to stored procedure parameter that running from VBA?如何将多个值传递给从 VBA 运行的存储过程参数?
【发布时间】:2015-04-09 06:18:31
【问题描述】:

我有情况。我创建了用 2 个参数调用 SP 的 VBA。如何将 2 个值传递给每个参数?

下面的代码作为ex,将单个值传递给每个参数:

cmd.Parameters.Append cmd.CreateParameter("@Class", adVarChar, adParamInput, 40)
cmd.Parameters("@Class").Value = "H"


cmd.Parameters.Append cmd.CreateParameter("@Color", adVarChar, adParamInput, 40)
cmd.Parameters("@Color").Value = "Black"

现在我也想传递“M”、“Yellow”。我怎样才能做到这一点? 我是否还需要对 SP 进行任何更改。请帮忙。

提前致谢

【问题讨论】:

  • 你不能。您需要使用新值再次调用 Store 过程。
  • 嗨@Saagar Elias Jacky,我刚刚尝试过,但没有显示结果。谢谢

标签: vba excel


【解决方案1】:

问题在于存储过程只希望传递一个值,而不是一系列值。如果 SQL 允许向 IN 子句传递一个这样的值数组,那么您就可以做生意了:

select * from mytable where id in @parameters

但不幸的是,它没有这样行不通。你可以去掉存储过程,把一个 SQL 字符串拼凑在一起,这是一个 SQL 注入风险,但如果你的代码只是在内部使用,那么就不会那么担心了。正如 cmets 中所提到的,如果您想按原样使用 SP,那么您可能只需要多次运行查询并将结果附加到本地列表/数组/记录集/每次运行它时。还有其他想法,但它们基本相同,因为您将自定义 SQL 字符串拼凑在一起,这更复杂,并且没有像设计的那样真正使用 SP 参数。

How to pass string parameter with `IN` operator in stored procedure SQL Server 2008

SQL IN Clause In Stored Procedure

【讨论】:

  • 嗨@James Toomey,感谢您提供的信息。
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2021-12-29
相关资源
最近更新 更多