可以在单个存储过程中创建表值参数(TVP)吗?

时间:2016-01-29 17:09:59

标签: sql-server stored-procedures parameters

我有一个存储过程需要在存储过程中接受多个值。在寻找方法之后,看起来SQL Server 2008+中推荐使用表值参数(TVP)。我正在使用SQL Server 2014。

我想知道的是,是否可以在同一存储过程中创建和使用TVP,或者是否需要在使用它们的存储过程之外创建TVP?如果可能的话,我希望能够将所有内容都包含在一个存储过程中,所以我可以从代码中调用这样的东西。

exec spMyProcedure "bob, Sam, Phil, Carol"

理想情况下,我想在实体框架播种中通过Code First部署脚本。

1 个答案:

答案 0 :(得分:1)

表值参数只是作为参数传递的表值变量。

是的 - 您可以在SP中声明一个表值变量,并以与使用表值参数相同的方式使用它。

就像您可以将字符串作为参数传递或将字符串声明为变量一样,您可以使用表变量执行相同的操作。

<强>无论其

你的例子没有意义。在这里,您将字符串传递给存储过程。如果该过程将该字符串转换为表格,则应该通过TVP。这就是说它们是“推荐”的全部意义。建议使用它们而不是传递字符串。