SSIS FOR Loop входит в бесконечный цикл
Я полагаю, что я установил правильные выражения, но это продолжает идти в бесконечный цикл. Вот подробности:
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 находится задача Execute SQL, которая вставляет значение @CD для этой итерации в таблицу. Выражение присваивания почему-то не работает, и, следовательно, условие EvalExpression никогда не выполняется. Что мне не хватает?
Я использую SQL Server 2012. Спасибо.
1 ответ
Переменная @[User::CD] имеет выражение, которому присваивается значение @ [User:: ED]. Затем вы пытаетесь изменить значение @[User::CD] в контексте цикла for. Это не приводит к ошибке, как попытка изменить итератор вне конструкции for, как это было бы в языках на основе Си, но логически это неправильно.
Предположим, SSIS изменяет значение, уменьшая его на 1. В следующий раз, когда ему нужно будет ссылаться на @[User::CD], он будет использовать выражение, которое говорит, что мое значение действительно @ [User:: ED], которое никогда не меняется.
Разрешение - удалите выражение из переменной @[User::CD].