我有一个存储过程需要在存储过程中接受多个值。在寻找方法之后,看起来SQL Server 2008+中推荐使用表值参数(TVP)。我正在使用SQL Server 2014。
我想知道的是,是否可以在同一存储过程中创建和使用TVP,或者是否需要在使用它们的存储过程之外创建TVP?如果可能的话,我希望能够将所有内容都包含在一个存储过程中,所以我可以从代码中调用这样的东西。
exec spMyProcedure "bob, Sam, Phil, Carol"
理想情况下,我想在实体框架播种中通过Code First部署脚本。
答案 0 :(得分:1)
表值参数只是作为参数传递的表值变量。
是的 - 您可以在SP中声明一个表值变量,并以与使用表值参数相同的方式使用它。
就像您可以将字符串作为参数传递或将字符串声明为变量一样,您可以使用表变量执行相同的操作。
<强>无论其强>
你的例子没有意义。在这里,您将字符串传递给存储过程。如果该过程将该字符串转换为表格,则应该通过TVP。这就是说它们是“推荐”的全部意义。建议使用它们而不是传递字符串。