如何将多个值传递到从VBA运行的存储过程参数?

我有情况 我已经创build了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”,“黄”也。 我怎样才能做到这一点? 我是否也需要对SP进行任何更改? 请帮忙。

提前致谢

问题是存储过程只希望传递一个值,而不是一系列值。 如果SQL允许一个IN子句传递一个像这样的值的数组,那么你将在业务中:

 select * from mytable where id in @parameters 

但不幸的是,这并不是不行。 你可以直接删除存储过程,只是拼凑一个SQLstring,这是一个SQL注入风险,但是如果你的代码只在内部使用,那么这不会是一个大问题。 正如在评论中提到的那样,如果你想按原样使用SP,那么你可能只需要多次运行查询,并将结果追加到本地的list / array / recordset /中,无论你每次运行它。 还有其他的想法,但它们基本上都是相同的,因为你正在拼凑一个自定义的SQLstring,这个string比较复杂,并没有像devise的那样真正使用SP参数。

如何在存储过程SQL Server 2008中用`IN`运算符传递string参数

SQL IN子句在存储过程中