Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
среда выполнения интеграции SSIS в Фабрика данных Azure
Контейнер цикла For Loop задаёт повторяющийся поток управления в пакете. Управление циклом аналогично структуре цикла For в языках программирования. При каждом повторении цикла контейнер «For Loop» вычисляет выражение и повторяет свой рабочий процесс до тех пор, пока выражение не примет значение False.
Контейнер "Цикл For" использует следующие элементы для определения цикла:
Необязательное выражение инициализации, в котором значения присваиваются счётчикам цикла.
выражение вычисления, содержащее выражение, которое используется для проверки необходимости продолжения или остановки цикла;
дополнительное выражение итерации, которое увеличивает или уменьшает счетчик цикла.
На следующей диаграмме показан контейнер «цикл For» с задачей «Отправка почты». Если выражение инициализации равно @Counter = 0, выражение вычисления равно @Counter < 4, а выражение итерации равно @Counter = @Counter + 1, то цикл повторяется четыре раза, после чего отправляет четыре электронных сообщения.
Выражения должны быть допустимыми для служб Integration Services SQL Server.
Для создания выражений инициализации и присваивания можно использовать оператор присваивания (=). Этот оператор больше нигде не поддерживается грамматикой выражений Integration Services и может использоваться только в выражениях инициализации и присваивания в контейнере «Цикл For». Любое выражение, использующее оператор присваивания, должно иметь синтаксис @Var = <expression>, где Var является переменной времени выполнения, а <expression> — это выражение, соответствующее правилам синтаксиса выражений Integration Services. Выражение может содержать переменные, литералы и другие операторы и функции, которые поддерживаются грамматикой выражений служб SSIS. Выражение должно возвращать тип данных, который может быть приведен к типу данных переменной.
Контейнер цикла For Loop может содержать только одно вычисляемое выражение. Это означает, что контейнер цикла For Loop выполняет все элементы потока управления одно и то же число раз. Поскольку контейнер цикла For может включать другие контейнеры цикла For, в пакетах можно создавать вложенные циклы и реализовывать сложную циклическую обработку.
Можно задать свойство транзакции для контейнера «цикл For», чтобы определить транзакцию для подмножества потока управления пакета. Таким образом, возможно выполнение транзакции на более детальном уровне. Например, если контейнер For Loop многократно выполняет поток управления, который обновляет данные в таблице, можно настроить контейнер For Loop и его поток управления так, чтобы они использовали транзакцию и чтобы, если не все данные будут успешно обновлены, данные не обновлялись вообще. Дополнительные сведения см. в разделе Транзакции служб Integration Services.
Добавить итерацию в поток управления с помощью контейнера "Цикл For"
Службы Integration Services включают контейнер For Loop, элемент потока управления, который упрощает включение циклов, которые условно повторяют поток управления в пакете. Дополнительные сведения см. в статье For Loop Container.
Контейнер «цикл For» вычисляет условие на каждой итерации цикла и останавливается, когда условие принимает значение false. Контейнер цикла For Loop включает выражения для инициализации цикла, задания условия проверки, которое определяет момент прекращения выполнения повторяющегося потока управления, а также присваивания значения выражению, обновляющему значение, с которым сравнивается условие проверки. Необходимо указать условие проверки, но выражения инициализации и присваивания можно не указывать.
Контейнер For Loop сам по себе не предоставляет никакой функциональности; он лишь задает структуру, в рамках которой строится повторяемый поток управления. Чтобы обеспечить работу контейнера, необходимо добавить в контейнер «цикл For Loop» как минимум одну задачу. Дополнительные сведения см. в разделе Integration Services Tasks.
Контейнер «цикл For» может содержать поток управления, включающий несколько задач, а также другие контейнеры. Добавление задач и контейнеров в контейнер For Loop аналогично добавлению их в пакет, за исключением того, что задачи и контейнеры перетаскиваются в контейнер For Loop, а не в пакет. Если контейнер цикла For содержит несколько задач или контейнеров, их можно соединить с помощью ограничений очередности, так же, как в пакете. Дополнительные сведения см. в статье Precedence Constraints.
Добавьте контейнер «Цикл For» в поток управления
Добавьте в пакет контейнер «цикл For». Дополнительные сведения см. в разделе Добавление задачи или контейнера в поток управления или удаление их из него.
Добавьте задачи и контейнеры в контейнер «Цикл For». Дополнительные сведения см. в разделе Добавление задачи или контейнера в поток управления или удаление их из него.
Соедините задачи и контейнеры в контейнере цикла For Loop с помощью ограничений предшествования. Дополнительные сведения см. в разделе Соединение задач и контейнеров с помощью элементов управления очередностью по умолчанию.
Настройте контейнер For Loop.
Настройте контейнер цикла For
В этой процедуре описывается, как настроить контейнер «цикл For Loop» с помощью диалогового окна Редактор цикла For Loop.
В SQL Server Data Tools (SSDT) дважды щелкните контейнер "For Loop", чтобы открыть редактор "For Loop".
При необходимости измените имя и описание контейнера «For Loop».
При необходимости введите выражение инициализации в текстовое поле InitExpression .
Введите вычисляемое выражение в текстовое поле EvalExpression.
Примечание.
Выражение должно иметь логическое значение. Если значением этого выражения будет false, выполнение цикла останавливается.
При необходимости введите выражение присвоения в текстовое поле AssignExpression .
При необходимости щелкните Выражения, а затем на странице Выражения создайте выражения для свойств контейнера «цикл For». Дополнительные сведения см. в разделе Добавление или изменение выражение свойства.
Щелкните ОК , чтобы закрыть Редактор циклов For.
Диалоговое окно редактора цикла For
На странице Цикл по элементам диалогового окна Редактор циклов по элементам можно настроить цикл, в котором рабочий процесс будет повторяться до тех пор, пока заданное условие не примет значение False.
Сведения о контейнере For Loop и его использовании в пакетах см. в разделе For Loop Container.
Параметры
InitExpression
При необходимости укажите выражение, которое инициализирует значения, используемые циклом.
EvalExpression
Укажите выражение, чтобы определить, следует ли циклу остановиться или продолжиться.
ВыражениеПрисваивания
При необходимости укажите выражение, которое изменяет условие при каждом повторении цикла.
Имя
Укажите уникальное имя для контейнера «Цикл For». Это имя используется в качестве метки для значка задачи.
Примечание.
Имена объектов в пределах пакета должны быть уникальными.
Описание
Предоставьте описание контейнера For Loop.
Используйте выражения с контейнером "Цикл For"
При настройке контейнера "For Loop" путём задания условия вычисления, начального значения или значения присваивания можно использовать как литералы, так и выражения.
Выражения могут содержать переменные. Преимущество использования переменных состоит в том, что они могут изменяться во время выполнения, делая пакеты более гибкими и простыми в управлении. Максимальная длина выражения составляет 4000 символов.
При указании в выражении переменной ее имя должно начинаться с символа @. Например, для переменной с именем Counter введите @Counter в выражение, которое использует контейнер "Цикл For". Если для данной переменной указывается пространство имен, необходимо заключать переменную и пространство имен в скобки. Например для переменной Counter в пространстве имен MyNamespace необходимо ввести [@MyNamespace::Counter].
Переменные, используемые контейнером "For Loop", должны быть определены в области действия контейнера "For Loop" или в области действия любого контейнера, расположенного выше в иерархии контейнеров пакета. Например, контейнер For Loop может использовать переменные, определённые в его области видимости, а также переменные, определённые в области видимости пакета. Дополнительные сведения см. в статье Переменные в службах Integration Services (SSIS) и разделе об использовании переменных в пакетах.
Грамматика выражений служб SSIS предоставляет полный набор операторов и функций для реализации сложных выражений, используемых для оценки, инициализации или назначения. Дополнительные сведения см. в разделе «Выражения Integration Services (SSIS)».