【发布时间】:2016-01-29 17:09:58
【问题描述】:
我有一个存储过程需要在一个存储过程中接受多个值。在寻找执行此操作的方法后,似乎在 SQL Server 2008+ 中建议使用表值参数 (TVP)。我正在使用 SQL Server 2014。
我想知道的是,是否可以在同一个存储过程中创建和使用 TVP,或者是否需要在使用它们的存储过程之外创建 TVP?如果可能的话,我希望能够将所有内容包含在一个存储过程中,这样我就可以从代码中调用这样的东西。
exec spMyProcedure "bob, Sam, Phil, Carol"
理想情况下,我想在实体框架播种中通过 Code First 部署脚本。
【问题讨论】:
-
您需要在外部创建 TVP 并使用它来将多个值传递给程序。如果您在 proc 内部创建,那么您将失去使用 TVP 的目标
-
如果您只是尝试将一维字符串数组传递给过程,除了使用 TVP 之外,还有其他一些不太复杂的选项。
-
@JamieD77 - 哪些方法最适合您?您是否在存储过程中解析字符串?
-
@webworm 传入一个分隔字符串并使用像sqlperformance.com/2012/07/t-sql-queries/split-strings 之一这样的拆分函数或使用 xml 数据类型
-
@JamieD77 - 很棒的链接!谢谢。我喜欢它如何分解您可以选择的所有选项。
标签: sql-server stored-procedures parameters