SSIS包范围变量由循环中的过程输出变量填充

SSIS包范围变量由循环中的过程输出变量填充,ssis,Ssis,具有具有输出参数的存储过程。此过程在foreach循环中调用。由于某种原因,一次迭代失败了,因为我有一个任务紧跟在这个任务之后,如果返回代码大于0,它将基于约束执行 当此过程成功运行时,输出变量值为0,此其他任务(记录某些信息的sql任务)将永远不会运行 然而,它确实在这一次迭代中运行,我能够重置传入的数据并逐步进入其中。存储过程后面的sql任务被命中,因为约束查看从过程调用映射到输出参数的变量 奇怪的是,我获取了完全相同的参数及其值,并直接在SSMS中调用了该过程,得到了一个输出参数值=0,而

具有具有输出参数的存储过程。此过程在foreach循环中调用。由于某种原因,一次迭代失败了,因为我有一个任务紧跟在这个任务之后,如果返回代码大于0,它将基于约束执行

当此过程成功运行时,输出变量值为0,此其他任务(记录某些信息的sql任务)将永远不会运行

然而,它确实在这一次迭代中运行,我能够重置传入的数据并逐步进入其中。存储过程后面的sql任务被命中,因为约束查看从过程调用映射到输出参数的变量

奇怪的是,我获取了完全相同的参数及其值,并直接在SSMS中调用了该过程,得到了一个输出参数值=0,而在SSIS中,执行的任务得到了>0

这让我想知道,在某些情况下,输出参数是否由于某种原因没有应用于变量

在沿着错误路径前进后,我是否应该手动将变量的值重新设置回0

[更新]

已解决-如果sql任务没有返回您认为的值,请启动sql事件探查器并观察您的发送。可能只是对您发送的内容“略有”不同感到惊讶。:=)


表达式约束逻辑是什么?@变量>0,计算操作是“表达式或约束”,因此任务失败或该变量>0。AlsoI刚刚再次调试了它,当我在该任务上遇到断点时,所讨论的变量是0,因此这意味着该任务失败,但我在调试窗口中没有看到错误消息更正上述注释。该变量在任务执行时为0,之后大于0,因此足以触发约束(红色)。我还通过探查器捕获了sql语句,现在将其与我直接在SSMS.Woot中发布的语句进行比较!多亏启动了探查器,我才弄明白。发送的语句中有一个值确实与我在SSMS中使用的值不同。事实证明,这是数字和货币之间的数据类型转换问题