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 находится задача «Выполнение SQL», которая вставляет значение @CD для этой итерации в таблицу. Выражение присваивания почему-то не работает, и, следовательно, условие EvalExpression никогда не выполняется. Что мне не хватает?

Я использую SQL Server 2012. Спасибо.


person Meta747    schedule 16.07.2014    source источник
comment
@billinkc обновил основной пост. Спасибо   -  person Meta747    schedule 16.07.2014
comment
Просто чтобы я понял. Переменная @ [User :: CD] имеет выражение, в котором ей присвоено значение @ [User :: ED]. Затем вы используете Forloop, где CD инициализируется как ED и уменьшается на месяц / минуту, пока вы не пересечете границу M12.   -  person billinkc    schedule 16.07.2014


Ответы (1)


Переменная @ [User :: CD] имеет выражение, в котором ей присвоено значение @ [User :: ED]. Затем вы пытаетесь изменить значение @ [User :: CD] в контексте цикла for. Это не вызывает ошибку, например, при попытке изменить итератор вне конструкции for, как это было бы в языках на основе C, но логически это неправильно.

Предположим, SSIS изменяет значение, уменьшая его на 1. В следующий раз, когда ему потребуется ссылка на @ [User :: CD], он будет использовать выражение, которое говорит, что мое значение действительно @ [User :: ED ] который никогда не меняется.

Решение - удалите выражение из вашей переменной @ [User :: CD].

person billinkc    schedule 16.07.2014