0

我相信我已经正确设置了表达式,但它一直进入无限循环。以下是详细信息:

Variables:
@CD Datetime = @[User::ED]
@ED datetime = 3/31/2014
@M12 Datetime = DATEADD("d", 1, DATEADD("m", -12, @[User::ED] ))

For-Loop:
InitExpression: @CD = @ED
EvalExpression: @CD > @M12
AssignExpression: @CD = DATEADD("m", -1, @CD)

For 循环中有一个执行 SQL 任务,它将该迭代的 @CD 值插入到表中。赋值表达式不知何故不起作用,因此永远不会满足 EvalExpression 条件。我错过了什么?

我正在运行 SQL Server 2012。谢谢。

4

1 回答 1

0

变量@[User::CD] 上有一个表达式,它被分配了@[User::ED] 的值。然后,您尝试在 for 循环的上下文中修改 @[User::CD] 的值。这不会像在基于 C 的语言中尝试修改 for 构造之外的迭代器那样引发错误,但从逻辑上讲,这是错误的。

假设 SSIS 通过将值减 1 来更改值。下次它需要引用 @[User::CD] 时,它将使用表示我的值实际上是永远不会改变的 @[User::ED] 的表达式。

解决方案 - 从您的 @[User::CD] 变量中删除表达式。

于 2014-07-16T14:45:15.017 回答