我相信我已经将表达式设置为正确,但它会一直进入无限循环。以下是详细信息:
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.谢谢。
答案 0 :(得分:0)
变量@ [User :: CD]上有一个表达式,它被赋予@ [User :: ED]的值。然后,您尝试在for循环的上下文中修改@ [User :: CD]的值。这并没有像在C语言中那样尝试修改for构造之外的迭代器,但在逻辑上,这是错误的。
假设SSIS通过将值递减1来更改该值。下次需要引用@ [User :: CD]时,它将使用表达式,表示我的值真的 @ [User :: ED]永远不会改变。
分辨率 - 从@ [User :: CD]变量中删除表达式。