Contenitore Ciclo ForFor Loop Container

Il contenitore Ciclo For definisce un flusso di controllo ripetuto all'interno di un pacchetto.The For Loop container defines a repeating control flow in a package. L'implementazione del ciclo è simile alla struttura del ciclo For nei linguaggi di programmazione.The loop implementation is similar to the For looping structure in programming languages. A ogni ripetizione del ciclo il contenitore Ciclo For valuta un'espressione e ne ripete il flusso di lavoro finché tale espressione non restituisce False.In each repeat of the loop, the For Loop container evaluates an expression and repeats its workflow until the expression evaluates to False.

Per definire il ciclo, il contenitore Ciclo For usa gli elementi seguenti:The For Loop container usesthe following elements to define the loop:

  • Un'espressione di inizializzazione facoltativa che assegna valori ai contatori del ciclo.An optional initialization expression that assigns values to the loop counters.

  • Un'espressione di valutazione che contiene l'espressione utilizzata per stabilire se il ciclo deve essere arrestato o continuare.An evaluation expression that contains the expression used to test whether the loop should stop or continue.

  • Un'espressione di iterazione facoltativa che incrementa o decrementa il contatore del ciclo.An optional iteration expression that increments or decrements the loop counter.

    Nella figura seguente viene illustrato un contenitore Ciclo For con un'attività Invia messaggi.The following diagram shows a For Loop container with a Send Mail task. Se l'espressione di inizializzazione è @Counter = 0, l'espressione di valutazione è @Counter < 4e l'espressione di iterazione è @Counter = @Counter + 1, il ciclo si ripeterà quattro volte e verranno inviati quattro messaggi di posta elettronica.If the initialization expression is @Counter = 0, the evaluation expression is @Counter < 4, and the iteration expression is @Counter = @Counter + 1, the loop repeats four times and sends four e-mail messages.

    Un contenitore ciclo For ripete un'attività quattro volteA For Loop container repeats a task four times

    Le espressioni devono essere espressioni di SQL ServerSQL Server Integration ServicesIntegration Services valide.The expressions must be valid SQL ServerSQL Server Integration ServicesIntegration Services expressions.

    Per creare le espressioni di inizializzazione e assegnazione, è possibile utilizzare l'operatore di assegnazione (=).To create the initialization and assignment expressions, you can use the assignment operator (=). In altre circostanze questo operatore non è supportato dalla grammatica delle espressioni di Integration Services, ma può essere utilizzato solo dai tipi di espressione di inizializzazione e assegnazione nel contenitore Ciclo For.This operator is not otherwise supported by the Integration Services expression grammar and can only be used by the initialization and assignment expression types in the For Loop container. Qualsiasi espressione che utilizza l'operatore di assegnazione deve presentare la sintassi @Var = <expression>, dove Var è una variabile in fase di esecuzione e <espressione > è un'espressione che segue le regole del SSISSSIS espressione sintassi.Any expression that uses the assignment operator must have the syntax @Var = <expression>, where Var is a run-time variable and <expression> is an expression that follows the rules of the SSISSSIS expression syntax. L'espressione può includere le variabili, i valori letterali e tutti gli operatori e le funzioni supportati dalla grammatica delle espressioni di SSIS.The expression can include the variables, literals, and any operators and functions that the SSIS expression grammar supports. L'espressione deve restituire un tipo di dati di cui è possibile eseguire il cast al tipo di dati della variabile.The expression must evaluate to a data type that can be cast to the data type of the variable.

    Un contenitore Ciclo For può includere una sola espressione di valutazione,A For Loop container can have only one evaluation expression. pertanto esegue tutti gli elementi del flusso di controllo per lo stesso numero di volte.This means that the For Loop container runs all its control flow elements the same number of times. Poiché un contenitore Ciclo For può includere altri contenitori Ciclo For, nei pacchetti è possibile compilare cicli nidificati e implementare loop complessi.Because the For Loop container can include other For Loop containers, you can build nested loops and implement complex looping in packages.

    È possibile impostare una proprietà di transazione sul contenitore Ciclo For per definire una transazione per un subset del flusso di controllo del pacchetto.You can set a transaction property on the For Loop container to define a transaction for a subset of the package control flow. In questo modo è possibile gestire le transazioni con un livello di granularità superiore.In this way, you can manage transactions at a more granular level. Se ad esempio un contenitore Ciclo For ripete un flusso di controllo che aggiorna più volte i dati di una tabella, sarà possibile configurare il ciclo For e il relativo flusso di controllo per l'utilizzo di una transazione, in modo da assicurare che se non è possibile aggiornare correttamente tutti i dati, non ne verrà aggiornato alcuno.For example, if a For Loop container repeats a control flow that updates data in a table multiple times, you can configure the For Loop and its control flow to use a transaction to ensure that if not all data is updated successfully, no data is updated. Per altre informazioni, vedere Transazioni di Integration Services.For more information, see Integration Services Transactions.

Aggiunta di un'iterazione a un flusso di controllo con il contenitore ciclo ForAdd iteration to a control flow with the For Loop container

Integration ServicesIntegration Servicesinclude il contenitore ciclo For, un elemento del flusso di controllo che semplifica l'integrazione di ciclo in modo condizionale che si ripete un flusso di controllo in un pacchetto. includes the For Loop container, a control flow element that makes it simple to include looping that conditionally repeats a control flow in a package. Per altre informazioni, vedere Contenitore Ciclo For.For more information, see For Loop Container.

Il contenitore Ciclo For valuta una condizione a ogni iterazione del ciclo e si arresta quando la condizione restituisce False.The For Loop container evaluates a condition on each iteration of the loop, and stops when the condition evaluates to false. Il contenitore Ciclo For include espressioni per l'inizializzazione del ciclo, la definizione della condizione da valutare per determinare se arrestare o meno l'esecuzione del flusso di controllo ripetuto, nonché l'assegnazione di un valore a un'espressione che aggiorna il valore con cui confrontare la condizione da valutare.The For Loop container includes expressions for initializing the loop, specifying the evaluation condition that stops execution of the repeating control flow, and assigning a value to an expression that updates the value against which the evaluation condition is compared. La condizione da valutare è obbligatoria, mentre le espressioni di inizializzazione e di assegnazione sono facoltative.You must provide an evaluation condition, but initialization and assignment expressions are optional.

Il contenitore Ciclo For non offre funzionalità, ma solo una struttura in cui compilare un flusso di controllo ripetibile.The For Loop container provides no functionality; it provides only the structure in which you build the repeatable control flow. Per aggiungere funzionalità al contenitore Ciclo For è necessario includervi almeno un'attività.To provide container functionality, you must include at least one task in the For Loop container. Per altre informazioni, vedere Attività di Integration Services.For more information, see Integration Services Tasks.

Il contenitore Ciclo For può includere un flusso di controllo con più attività e altri contenitori.The For Loop container can include a control flow with multiple tasks, and can include other containers. L'aggiunta di attività e contenitori a un contenitore Ciclo For è analoga all'aggiunta di tali elementi a un pacchetto, con la differenza che è necessario trascinare attività e contenitori nel contenitore Ciclo For anziché nel pacchetto.Adding tasks and containers to a For Loop container is similar to adding them to a package, except you drag the tasks and containers to the For Loop container instead of to the package. Se il contenitore Ciclo For include più di un contenitore o attività, sarà possibile connettere tali elementi utilizzando vincoli di precedenza, come avviene nei pacchetti.If the For Loop container includes more than one task or container, you can connect them using precedence constraints just as you do in a package. Per altre informazioni, vedere Vincoli di precedenza.For more information, see Precedence Constraints.

Aggiungere un contenitore ciclo For in un flusso di controlloAdd a For Loop container in a control flow

  1. Aggiungere il contenitore Ciclo For al pacchetto.Add the For Loop container to the package. Per altre informazioni, vedere Aggiunta o eliminazione di un'attività o un contenitore in un flusso di controllo.For more information, see Add or Delete a Task or a Container in a Control Flow.

  2. Aggiungere attività e contenitori al contenitore Ciclo For.Add tasks and containers to the For Loop container. Per altre informazioni, vedere Aggiunta o eliminazione di un'attività o un contenitore in un flusso di controllo.For more information, see Add or Delete a Task or a Container in a Control Flow.

  3. Connettere le attività e i contenitori inclusi nel contenitore Ciclo For tramite vincoli di precedenza.Connect tasks and containers in the For Loop container using precedence constraints. Per altre informazioni, vedere Connessione di attività e contenitori tramite un vincolo di precedenza predefinito.For more information, see Connect Tasks and Containers by Using a Default Precedence Constraint.

  4. Configurare il contenitore Ciclo For.Configure the For Loop container. Per altre informazioni, vedere Configurazione di un contenitore Ciclo For.For more information, see Configure a For Loop Container.

Configurare il contenitore ciclo ForConfigure the For Loop container

Questa procedura descrive come configurare un contenitore Ciclo For tramite la finestra di dialogo Editor ciclo For .This procedure describes how to configure a For Loop container by using the For Loop Editor dialog box.

Per un esempio di contenitore Ciclo For, vedere la pagina relativa all' esecuzione corretta di cicli SSIS sul sito Web bimonkey.com.For an example of the For Loop container, see SSIS Loops that do not fail on bimonkey.com.

  1. In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)fare doppio clic sul contenitore Ciclo For per aprire la finestra di dialogo Editor ciclo For.In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), double-click the For Loop container to open the For Loop Editor.

  2. Facoltativamente, modificare il nome e la descrizione del contenitore Ciclo For.Optionally, modify the name and description of the For Loop container.

  3. Facoltativamente, digitare un'espressione di inizializzazione nella casella di testo InitExpression .Optionally, type an initialization expression in the InitExpression text box.

  4. Digitare un'espressione di valutazione nella casella di testo EvalExpression .Type an evaluation expression in the EvalExpression text box.

    Nota

    L'espressione deve restituire un valore booleano.The expression must evaluate to a Boolean. Quando l'espressione restituisce false, l'esecuzione del ciclo viene arrestata.When the expression evaluates to false, the loop stops running.

  5. Facoltativamente, digitare un'espressione di assegnazione nella casella di testo AssignExpression .Optionally, type an assignment expression in the AssignExpression text box.

  6. Facoltativamente, fare clic su Espressioni e, nella pagina Espressioni , creare espressioni di proprietà per le proprietà del contenitore Ciclo For.Optionally, click Expressions and, on the Expressions page, create property expressions for the properties of the For Loop container. Per altre informazioni, vedere Aggiunta o modifica di un'espressione di proprietà.For more information, see Add or Change a Property Expression.

  7. Fare clic su OK per chiudere la finestra Editor ciclo For.Click OK to close the For Loop Editor.

Per la finestra di dialogo Editor cicloFor Loop Editor dialog box

La pagina Ciclo For della finestra di dialogo Editor ciclo For consente di configurare un ciclo che ripeta un flusso di lavoro fino a quando una determinata condizione non restituisca il valore False.Use the For Loop page of the For Loop Editor dialog box to configure a loop that repeats a workflow until a specified condition evaluates to false.

Per ulteriori informazioni sul contenitore Ciclo Foreach e sulle modalità di utilizzo del contenitore nei pacchetti, vedere For Loop Container.To learn about the For Loop container and how to use it in packages, see For Loop Container.

OpzioniOptions

InitExpressionInitExpression
Consente di specificare un'espressione facoltativa che inizializzi i valori utilizzati dal ciclo.Optionally, provide an expression that initializes values used by the loop.

EvalExpressionEvalExpression
Consente di specificare un'espressione che determini se il ciclo deve arrestarsi o continuare.Provide an expression to evaluate whether the loop should stop or continue.

AssignExpressionAssignExpression
Consente di specificare un'espressione facoltativa che modifichi una condizione ogni volta che il ciclo viene ripetuto.Optionally, provide an expression that changes a condition each time that the loop repeats.

NomeName
Consente di specificare un nome univoco per il contenitore Ciclo For.Provide a unique name for the For Loop container. Tale nome viene utilizzato come etichetta nell'icona dell'attività.This name is used as the label in the task icon.

Nota

I nomi degli oggetti devono essere univoci all'interno di un pacchetto.Object names must be unique within a package.

DescriptionDescription
Consente di specificare una descrizione per il contenitore Ciclo For.Provide a description of the For Loop container.

Utilizzare le espressioni con il contenitore ciclo ForUse expressions with the For Loop container

Quando si configura il contenitore Ciclo For specificando una condizione da valutare, un valore di inizializzazione o un valore di assegnazione, è possibile utilizzare valori letterali o espressioni.When you configure the For Loop container by specifying an evaluation condition, initialization value, or assignment value, you can use either literals or expressions.

Le espressioni possono includere variabili.The expressions can include variables. Il vantaggio delle variabili è che possono essere aggiornate in fase di esecuzione, rendendo il pacchetto più flessibile e più facile da gestire.The advantage of using variables is that they can be updated at run time, making the packages more flexible and easier to manage. Un'espressione può avere una lunghezza massima di 4000 caratteri.The maximum length of an expression is 4000 characters.

Quando si specifica una variabile in un'espressione è necessario anteporre il simbolo @ al nome della variabile.When you specify a variable in an expression, you must preface the variable name with the at sign (@). Ad esempio, per una variabile denominata contatore, immettere @Counter nell'espressione che utilizza il contenitore ciclo For.For example, for a variable named Counter, enter @Counter in the expression that the For Loop container uses. Se la variabile include la proprietà Namespace, sarà necessario racchiudere la variabile e lo spazio dei nomi tra parentesi quadre.If you include the namespace property on the variable, you must enclose the variable and namespace in brackets. Ad esempio, per un contatore variabile il MyNamespace dello spazio dei nomi, tipo [@MyNamespace::Counter].For example, for a Counter variable in the MyNamespace namespace, type [@MyNamespace::Counter].

Le variabili utilizzate dal contenitore Ciclo For devono essere definite nell'ambito del contenitore Ciclo For o di un altro contenitore di livello superiore nella gerarchia dei contenitori del pacchetto.The variables that the For Loop container uses must be defined in the scope of the For Loop container or in the scope of any container that is higher in the package container hierarchy. Un contenitore Ciclo For può ad esempio utilizzare sia variabili definite nel proprio ambito, sia variabili definite nell'ambito del pacchetto.For example, a For Loop container can use variables defined in its scope and also variables defined in package scope. Per altre informazioni, vedere Variabili di Integration Services (SSIS) e Utilizzo di variabili nei pacchetti.For more information, see Integration Services (SSIS) Variables and Use Variables in Packages.

La grammatica delle espressioni di SSISSSIS offre un set completo di operatori e funzioni per l'implementazione di espressioni complesse che è possibile utilizzare per la valutazione, l'inizializzazione o l'assegnazione.The SSISSSIS expression grammar provides a complete set of operators and functions for implementing complex expressions used for evaluation, initialization, or assignment. Per altre informazioni, vedere Espressioni di Integration Services (SSIS).For more information, see Integration Services (SSIS) Expressions.

Vedere ancheSee Also

Flusso di controllo Control Flow
Integration Services ( SSIS ) EspressioniIntegration Services (SSIS) Expressions