Цикл по каждому элементу Microsoft SSIS — эквивалент оператора break

Есть ли в цикле Foreach в SSIS способ, с помощью которого в случае сбоя задачи можно выйти из цикла и перейти к следующей итерации?

Я перебираю файлы xml и выполняю поиск, используя значения в этом файле, если поиск не возвращает никаких значений, о которых я хотел бы сообщить, а затем не выполняю никаких других задач для этого файла. Если нет эквивалента оператору break, как еще этого можно достичь?


person bobwah    schedule 13.01.2009    source источник


Ответы (4)


Вы также можете использовать цикл for с логическим условием, таким как цикл, пока переменная равна true. Затем, когда вы хотите выйти из этого цикла, просто измените значение этой переменной на false, и тогда вы выйдете из цикла.

Отвечая на ваш вопрос... цикл foreach, циклы по коллекции и другие перечисляемые конструкции, пока они существуют для цикла. Таким образом, вы можете либо найти обходной путь, либо просто использовать цикл for вместо цикла foreach. Таким образом, у вас будет больше контроля над циклом, поскольку вы устанавливаете выражение условия.

person Jobo    schedule 15.01.2009

И еще один способ - поместить контейнер последовательности в ваш цикл, а затем поместить условные шаги в контейнер последовательности. Любое решение, которое должно «продолжить», должно только выйти из контейнера последовательности. Очень просто реализовать со всеми необходимыми элементами управления, включая перехват ошибок.

person bielawski    schedule 11.05.2017

Поиск может перенаправить, если нет возвращенных значений, в сторону от успешного потока.

Вам нужно, чтобы остальная часть вашего цикла foreach знала, что произошла ошибка, поэтому одним из способов было бы установить переменную пакета при ошибке непосредственно перед тем, как вы будете вести журнал.

Затем в стрелке «успех» после поиска вы можете изменить его на условный успех, чтобы он продолжался только в том случае, если значение переменной не является значением ошибки.

person Rich    schedule 14.01.2009

Итак, у меня была эта проблема, и я решил ее, а) перенаправив неудачную задачу на фиктивную задачу, которая ничего не делала и завершилась, и б) установив для параметра «ПРЕДВАРИТЕЛЬНЫЕ РЕЗУЛЬТАТЫ» значение «УСПЕХ», который прошел именно так, как я хотел.

person TheBigRedCup    schedule 15.12.2015