Udostępnij przez


Kontener pętli 'for'

Dotyczy:SQL Server SSIS Integration Runtime w ramach usługi Azure Data Factory

Kontener For Loop definiuje powtarzający się przepływ sterowania w pakiecie. Implementacja pętli jest podobna do struktury pętli For w językach programowania. W każdej powtórzeniu pętli kontener For Loop oblicza wyrażenie i powtarza swój przepływ pracy, dopóki wyrażenie nie zwróci wartości False.

Kontener For Loop używa następujących elementów do zdefiniowania pętli:

  • Opcjonalne wyrażenie inicjowania, które przypisuje wartości do liczników pętli.

  • Wyrażenie ewaluacyjne zawierające wyrażenie używane do testowania, czy pętla powinna zostać zatrzymana, czy kontynuować.

  • Opcjonalne wyrażenie iteracji, które zwiększa lub dekrementuje licznik pętli.

Na poniższym diagramie przedstawiono kontener For Loop z zadaniem Wyślij pocztę. Jeśli wyrażenie inicjowania to @Counter = 0, wyrażenie oceny to @Counter < 4, a wyrażenie iteracji to @Counter = @Counter + 1, pętla powtarza się cztery razy i wysyła cztery wiadomości e-mail.

Kontener For Loop powtarza zadanie cztery razy

Wyrażenia muszą być prawidłowymi wyrażeniami usług SQL Server Integration Services.

Aby utworzyć wyrażenia inicjowania i przypisania, możesz użyć operatora przypisania (=). Ten operator nie jest w inny sposób obsługiwany przez gramatykę wyrażeń usług Integration Services i może być używany tylko przez typy wyrażeń inicjowania i przypisania w kontenerze For Loop. Każde wyrażenie używające operatora przypisania musi mieć składnię @Var = <expression>, gdzie Var jest zmienną czasu wykonywania, a <wyrażenie jest wyrażeniem> zgodnym z regułami składni wyrażenia SSIS. Wyrażenie może zawierać zmienne, literały i wszystkie operatory i funkcje obsługiwane przez gramatykę wyrażeń SSIS. Wyrażenie musi mieć wartość typu danych, który można rzutować na typ danych zmiennej.

Kontener For Loop może mieć tylko jedno wyrażenie ewaluacyjne. Oznacza to, że kontener For Loop uruchamia wszystkie elementy przepływu sterowania o tej samej liczbie razy. Ponieważ kontener For Loop może zawierać inne kontenery For Loop, można tworzyć zagnieżdżone pętle i implementować złożone pętle w pakietach.

Właściwość transakcji można ustawić w kontenerze For Loop, aby zdefiniować transakcję dla podzbioru przepływu sterowania pakietem. W ten sposób można zarządzać transakcjami na bardziej szczegółowym poziomie. Jeśli na przykład kontener pętli For powtarza przepływ sterowania, który wiele razy aktualizuje dane w tabeli, możesz skonfigurować pętlę For i jej przepływ sterowania tak, aby używać transakcji, co zapewni, że jeśli nie wszystkie dane zostaną pomyślnie zaktualizowane, to żadne dane nie zostaną zaktualizowane. Aby uzyskać więcej informacji, zobacz Integration Services Transactions.

Dodawanie iteracji do przepływu sterowania za pomocą kontenera For Loop

Usługi Integration Services obejmują kontener For Loop, element przepływu sterowania, który ułatwia dołączanie pętli warunkowo powtarzającej przepływ sterowania w pakiecie. Aby uzyskać więcej informacji, zobacz For Loop Container.

Kontener For Loop ocenia warunek dla każdej iteracji pętli i zatrzymuje się, gdy warunek daje wartość false. Kontener For Loop zawiera wyrażenia do inicjowania pętli, określając warunek oceny, który zatrzymuje wykonywanie powtarzającego się przepływu sterowania i przypisuje wartość do wyrażenia, które aktualizuje wartość, względem której jest porównywany warunek oceny. Musisz podać warunek oceny, ale inicjowanie i wyrażenia przypisania są opcjonalne.

Kontener For Loop nie oferuje żadnych funkcji; zapewnia tylko strukturę, w której tworzysz powtarzalny przepływ sterowania. Aby zapewnić funkcjonalność kontenera, należy uwzględnić co najmniej jedno zadanie w kontenerze For Loop. Aby uzyskać więcej informacji, zobacz Integration Services Tasks.

Kontener For Loop może zawierać przepływ sterowania z wieloma zadaniami i może zawierać inne kontenery. Dodawanie zadań i kontenerów do kontenera for loop jest podobne do dodawania ich do pakietu, z wyjątkiem przeciągania zadań i kontenerów do kontenera For Loop zamiast do pakietu. Jeśli kontener For Loop zawiera więcej niż jedno zadanie lub kontener, możesz połączyć je przy użyciu ograniczeń pierwszeństwa, tak jak w pakiecie. Aby uzyskać więcej informacji, zobacz Ograniczenia Pierwszeństwa.

Dodawanie kontenera For Loop w przepływie sterowania

  1. Dodaj kontener For Loop do pakietu. Aby uzyskać więcej informacji, zobacz Dodawanie lub usuwanie zadania lub kontenera w przepływie sterowania.

  2. Dodaj zadania i kontenery do kontenera For Loop. Aby uzyskać więcej informacji, zobacz Dodawanie lub usuwanie zadania lub kontenera w przepływie sterowania.

  3. Łączenie zadań i kontenerów w kontenerze For Loop przy użyciu ograniczeń pierwszeństwa. Aby uzyskać więcej informacji, zobacz Łączenie zadań i kontenerów za pomocą domyślnego ograniczenia kolejności.

  4. Skonfiguruj kontener For Loop.

Konfigurowanie kontenera For Loop

W tej procedurze opisano sposób konfigurowania kontenera pętli for za pomocą okna dialogowego Edytora pętli for.

  1. W narzędziu SQL Server Data Tools (SSDT) kliknij dwukrotnie kontener pętli for, aby otworzyć Edytor pętli for.

  2. Opcjonalnie zmodyfikuj nazwę i opis kontenera For Loop.

  3. Opcjonalnie wpisz wyrażenie inicjowania w polu tekstowym InitExpression .

  4. Wpisz wyrażenie ewaluacyjne w polu tekstowym EvalExpression .

    Uwaga / Notatka

    Wyrażenie musi mieć wartość logiczną. Gdy wyrażenie zwróci wartość false, pętla przestanie działać.

  5. Opcjonalnie wpisz wyrażenie przypisania w polu tekstowym AssignExpression .

  6. Opcjonalnie kliknij pozycję Wyrażenia , a następnie na stronie Wyrażenia utwórz wyrażenia właściwości dla właściwości kontenera For Loop. Aby uzyskać więcej informacji, zobacz Dodawanie lub zmienianie wyrażenia właściwości.

  7. Kliknij przycisk OK , aby zamknąć Edytor pętli for.

Okno dialogowe Edytora pętli for Loop

Użyj strony For Loop w oknie dialogowym Edytora pętli for, aby skonfigurować pętlę, która powtarza przepływ pracy, dopóki określony warunek nie przyjmie wartości false.

Aby dowiedzieć się więcej o kontenerze For Loop i sposobie używania go w pakietach, zobacz For Loop Container (Kontener pętli for loop).

Opcje

InitExpression
Opcjonalnie podaj wyrażenie, które inicjuje wartości używane przez pętlę.

EvalExpression
Podaj wyrażenie, aby ocenić, czy pętla powinna zostać zatrzymana, czy kontynuować.

AssignExpression
Opcjonalnie podaj wyrażenie, które zmienia warunek za każdym razem, gdy pętla powtarza się.

Nazwa
Podaj unikatową nazwę kontenera For Loop. Ta nazwa jest używana jako etykieta w ikonie zadania.

Uwaga / Notatka

Nazwy obiektów muszą być unikatowe w pakiecie.

Opis
Podaj opis kontenera For Loop.

Używanie wyrażeń z kontenerem For Loop

Podczas konfigurowania kontenera For Loop przez określenie warunku oceny, wartości inicjowania lub wartości przypisania można użyć literałów lub wyrażeń.

Wyrażenia mogą zawierać zmienne. Zaletą używania zmiennych jest możliwość ich aktualizowania w czasie wykonywania, dzięki czemu pakiety są bardziej elastyczne i łatwiejsze do zarządzania. Maksymalna długość wyrażenia to 4000 znaków.

Podczas określania zmiennej w wyrażeniu, należy poprzedzić nazwę zmiennej znakiem @. Na przykład w przypadku zmiennej o nazwie Counter wprowadź @Counter w wyrażeniu używanym przez kontener For Loop. Jeśli uwzględnisz atrybut przestrzeni nazw w zmiennej, musisz ująć zmienną i przestrzeń nazw w nawiasach kwadratowych. Na przykład dla zmiennej Counter w przestrzeni nazw MyNamespace wpisz [@MyNamespace::Counter].

Zmienne używane przez kontener for loop muszą być zdefiniowane w zakresie kontenera For Loop lub w zakresie dowolnego kontenera, który jest wyższy w hierarchii kontenera pakietów. Na przykład kontener For Loop może używać zmiennych zdefiniowanych w jego zakresie, a także zmiennych zdefiniowanych w zakresie pakietu. Aby uzyskać więcej informacji, zobacz Zmienne usług Integration Services (SSIS) i Używanie zmiennych w pakietach.

Gramatyka wyrażeń SSIS udostępnia kompletny zestaw operatorów i funkcji do implementowania złożonych wyrażeń używanych do obliczania, inicjowania lub przypisywania. Aby uzyskać więcej informacji, zobacz Integration Services (SSIS) Expressions.

Zobacz też

Przepływ sterowania
wyrażenia usług Integration Services (SSIS)