是否可以在同一存储过程中并行处理for循环?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在同一存储过程中并行处理for循环?相关的知识,希望对你有一定的参考价值。

有一个SQL Server存储过程,我想循环遍历从表中读取的一组选项。所以说一张桌子有100个选项。我的存储过程将循环遍历这些选项,对于每个选项,我需要进行一些检查 - 通过查询基于选项的几个特定表并标记与其相关的状态。

我是否可以拆分for循环,以便在一个循环中处理第1行-50,在另一个循环中处理第51-100行,并且我能够并行运行这两个?我看到了一种方法,您可以通过SQL作业或其他方式并行运行多个存储过程,但无法通过拆分来查看是否可以通过并行执行for循环。

答案

将您的问题视为学术问题,而不是考虑是否存在基于集合的解决方案,因为没有足够的信息可以做到这一点。

不能使用标准TSQL在单个循环中(或在两个单独的循环中)执行此操作,因为TSQL是同步的。即使您“拆分”循环,第二个过程调用也无法启动,直到第一个调用完成。它们不会并行运行。

要并行运行两个循环,您必须引入一些其他语言。 this search的结果出现了不少想法,但我看到的前几个有很多关于陷阱和意外结果的警告。如果您想尝试其中任何一个,由您决定。

以上是关于是否可以在同一存储过程中并行处理for循环?的主要内容,如果未能解决你的问题,请参考以下文章

存储过程中的 Oracle For 循环不循环

oracle存储过程中循环for in是如何使用的

如何在 for 循环中并行处理。我的代码不正确地并行操作

Oracle存储过程游标for循环怎么写

Navicat for MySQL循环添加大量数据用啥

在 Python 中通过线程/核心/节点并行化 for 循环