For loop 循环进入无限循环的SSI

For loop 循环进入无限循环的SSI,for-loop,sql-server-2012,ssis,sql-server-2012-datatools,For Loop,Sql Server 2012,Ssis,Sql Server 2012 Datatools,我相信我已经把表达式设置正确了,但它一直在进入无限循环。详情如下: 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

我相信我已经把表达式设置正确了,但它一直在进入无限循环。详情如下:

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循环中有一个executesql任务,它将该迭代的@CD值插入表中。赋值表达式不知何故不起作用,因此永远不满足EvalExpression条件。我错过了什么


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

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

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


解析-从@[User::CD]变量中删除表达式。

@billinkc更新了主要帖子。谢谢你,让我明白了。变量@[User::CD]上有一个表达式,其中赋值为@[User::ED]。然后使用Forloop,其中CD被初始化为ED,并按月/分钟递减,直到越过M12边界