1

我希望能够查询多个相同类型的参数(例如,几个 ID,只是为了保持示例简单),因此我只需执行一次过程,而不是为每个单独的 ID 执行一次。在我的单实例 proc 返回一个名称的地方,我的 get-all proc 将返回一个名称的单列表。

我现在拥有的:

EXEC MyProc(123);
EXEC MyProc(456);
EXEC MyProc(789);

我想要什么:

// Square brackets aren't correct syntax,
// they just represent a list that contains x number of IDs
EXEC MyProc([123, 456, 789]);  

我可以这样做吗?如果可以,是否有一种简单的机制来处理不涉及游标和各种过于复杂的事情的事情?这甚至会被认为是一个好主意吗?

4

1 回答 1

0

要只执行一次 proc,您必须重构您的 proc 以使用多个 ID,因为没有 T-SQL 函数或语法糖可以为您执行此操作。

如果这是可变的,因为可能有一个或多个 ID,您必须在一个参数中将多个 ID 传递给您的 proc。在较新版本的 SQL Server 中,这种排序数组的传递可能更容易。

例如,您可以尝试传递:

  • SQL Server 2008+ 中的TVP
  • 然后在 proc 中拆分的分隔字符串
  • 然后在proc中解析的xml
  • 一个表名,然后由 proc 动态读取
  • 使用 proc 和调用者事先都知道的表名

对传递数组的快速搜索是 SQL Server 将产生更多结果,其中最好的是@Andomar 提到的SQL Server 中的数组和列表。

于 2013-02-07T17:29:14.480 回答