在 SSIS 的 Foreach 循环中,是否有一种方法可以在任务失败时跳出循环进入下一次迭代?
我正在遍历 xml 文件并使用此文件中的值执行查找,如果查找不返回任何我想报告的值,然后不为此文件执行任何其他任务。如果没有等效于 break 语句的其他方法,如何实现?
在 SSIS 的 Foreach 循环中,是否有一种方法可以在任务失败时跳出循环进入下一次迭代?
我正在遍历 xml 文件并使用此文件中的值执行查找,如果查找不返回任何我想报告的值,然后不为此文件执行任何其他任务。如果没有等效于 break 语句的其他方法,如何实现?
您还可以使用带有布尔条件的“for”循环,例如在变量等于 true 时循环。然后,当您想跳出该循环时,只需将该变量的值更改为 false 即可跳出循环。
回答你的问题......一个 foreach 循环,循环一个集合和其他可枚举的结构,只要它们存在循环。因此,您可以找到一种解决方法,或者只使用“for”循环而不是“foreach”循环。这样,您就可以对循环进行更多的编程类型控制,因为您设置了条件表达式。
另一种方法是将序列容器放入循环中,然后将条件步骤放入序列容器中。任何应该“继续”的决定只需要退出序列容器。使用您可能想要的所有控件(包括错误捕获)实现非常简单。
如果没有返回值,则查找可以重定向,远离成功的流程。
您需要 foreach 循环的其余部分才能知道发生了错误,因此一种方法是在进行日志记录之前将包变量设置为错误。
然后,在查找后的“成功”箭头中,您可以将其更改为条件成功,这样只有在变量的值不是错误值时才会继续。
所以我刚刚遇到了这个问题并通过以下方式解决了它:a)将失败的任务引导到一个什么都不做并结束的虚拟任务,b)将“FORCEEXECUTIONRESULTS”设置为“SUCCESS”,这正是我想要的方式。