首页 > 解决方案 > SSIS For Loop 不会跳出循环

问题描述

我有一个 SSIS 包,我在其中尝试使用 For 循环来检查条件(Web 服务响应)。我在 SSIS 中的 EvalExpression 中有一个条件,并且我正在循环内的数据流任务中设置该 EvalExpression 中的变量之一。我还记录了表达式以及表达式中的变量,当 EvalExpression 变为 false 时,循环继续进行。有人可以解释为什么会这样吗?或者我怎样才能在每次迭代中获得真正的 EvalExpression。

这是我的评估表达式

(@[User::statusMessageLoop] == 1 && @[User::statusMessageLoopCheck] == 1)

变量 User::statusMessageLoopCheck 在循环的每次迭代中设置,当我希望它跳出循​​环时,我将其设置为 0。

我希望下面的图片有助于解释我的情况,并感谢大家的意见。

for 循环属性

我希望循环继续进行的条件

当这些条件为真时跳出循环

标签: ssis

解决方案


我假设您正在正确地将 XML 读入列中,并且您知道如何做到这一点。

  1. 添加脚本组件并选择“转换”
  2. 添加你的变量(我叫我的isTrue)作为读写
  3. 选择您的列作为输入读取
  4. 输入脚本
  5. 添加以下代码以设置您的变量

    Variables.isTrue = Row.isTrue == true ? 1 : 0;
    

这是基本的 if then else 逻辑。

这就是使用 SSIS 继承工具设置变量的方式。

如果这不起作用,也许您应该检查以确保您正在正确读取 XML。

编辑:

您需要一个临时变量来保存测试结果,然后您可以在执行后设置包变量。这是代码的屏幕截图:

在此处输入图像描述

为此表示歉意。我和你一起学到了这一课。我通常完全在 C# 中处理所有 XML 和 JSON。

请注意,布尔测试也是在行处理之外声明的。

这假设您也只有一行处理。


推荐阅读