Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
SSIS Integration Runtime en Azure Data Factory
El contenedor Bucle For define un flujo de control repetitivo en un paquete. La implementación del bucle es similar a la estructura de bucle For de los lenguajes de programación. En cada repetición del bucle, el contenedor de bucles For evalúa una expresión y repite el flujo de trabajo hasta que la expresión se evalúe como False.
El contenedor de bucles For utiliza los siguientes elementos para definir el bucle:
Una expresión de inicialización opcional que asigna valores a los contadores de bucle.
Una expresión de evaluación que contiene la expresión usada para comprobar si el bucle debe detenerse o continuar.
Una expresión de iteración opcional que incrementa o disminuye el contador del bucle.
El siguiente diagrama muestra un contenedor Bucle For con una tarea de envío de correo. Si la expresión de inicialización es @Counter = 0, la expresión de evaluación es @Counter < 4y la expresión de iteración es @Counter = @Counter + 1, el bucle se repetirá cuatro veces y enviará cuatro mensajes de correo electrónico.
Las expresiones deben ser expresiones de SQL Server Integration Services válidas.
Para crear las expresiones de inicialización y asignación, puede utilizar el operador de asignación (=). La gramática de expresiones de Integration Services no admite este operador en ningún otro contexto, y solo puede usarse en las expresiones de inicialización y asignación del contenedor Bucle For. Cualquier expresión que use el operador de asignación necesita tener la sintaxis @Var = <expression>, donde Var es una variable de tiempo de ejecución y <expression> es una expresión que sigue las reglas de sintaxis de la expresión SSIS. La expresión puede incluir variables, literales y cualquier operador o función compatible con la gramática de expresiones de SSIS. La evaluación de la expresión debe devolver un tipo de datos que se pueda convertir al tipo de datos de la variable.
Un contenedor For Loop solo puede tener una expresión de evaluación. Esto significa que el contenedor Bucle For ejecuta todos sus elementos de flujo de control el mismo número de veces. Como el contenedor de bucles For puede incluir otros contenedores de bucles For, es posible generar bucles anidados e implementar bucles complejos en paquetes.
Puede establecer una propiedad de transacción en el contenedor Bucle For para definir una transacción para un subconjunto del flujo de control del paquete. De esta manera, puede administrar las transacciones en mayor detalle. Por ejemplo, si un contenedor de bucles For repite un flujo de control que actualiza los datos de una tabla varias veces, puede configurar el bucle For y su flujo de control para que utilicen una transacción, a fin de asegurarse de que si no se actualizan todos los datos correctamente, no se actualice ningún dato. Para más información, vea Transacciones de Integration Services.
Agregar una iteración a un flujo de control con el contenedor Bucle For
Integration Services incluye el contenedor For Loop, un elemento de flujo de control que permite incluir de forma sencilla bucles que repiten condicionalmente un flujo de control en un paquete. Para obtener más información, consulte For Loop Container.
El contenedor de bucles For evalúa una condición en cada iteración del bucle y se detiene cuando la condición es falsa. El contenedor de bucles For incluye expresiones para inicializar el bucle, especificando la condición de evaluación que detiene la ejecución del flujo de control repetido y asignando un valor a una expresión que actualiza el valor con el que se compara la condición de evaluación. Debe proporcionar una condición de evaluación, pero las expresiones de inicialización y asignación son opcionales.
El contenedor For Loop no proporciona ninguna funcionalidad; solo proporciona la estructura en la que se crea el flujo de control repetible. Para que el contenedor funcione, debe incluir al menos una tarea en el contenedor Bucle For. Para más información, consulte Integration Services Tasks.
El contenedor For Loop puede incluir un flujo de control con varias tareas y también puede incluir otros contenedores. Agregar tareas y contenedores a un contenedor de bucles For es similar a agregarlas a un paquete, salvo que las tareas y contenedores se arrastran al contenedor de bucles For en lugar de al paquete. Si el contenedor Bucle For incluye más de una tarea o contenedor, puede conectarlos entre sí mediante restricciones de precedencia, igual que en un paquete. Para obtener más información, vea Restricciones de precedencia.
Agregar un contenedor For Loop a un flujo de control
Agregue el contenedor For Loop al paquete. Para más información, vea Agregar o eliminar tareas o contenedores en un flujo de control.
Agregar tareas y contenedores al contenedor Bucle For. Para más información, vea Agregar o eliminar tareas o contenedores en un flujo de control.
Conecte tareas y contenedores en el contenedor Bucle For usando restricciones de precedencia. Para más información, vea Conectar tareas y contenedores mediante una restricción de precedencia predeterminada.
Configure el contenedor For Loop.
Configurar el contenedor del bucle For
En este procedimiento se describe cómo configurar un contenedor de bucles For mediante el cuadro de diálogo Editor de bucles For .
En SQL Server Data Tools (SSDT), haga doble clic en el contenedor de bucles For para abrir el Editor de bucles For.
Si lo desea, modifique el nombre y la descripción del contenedor For Loop.
También puede escribir una expresión de inicialización en el cuadro de texto InitExpression .
Escriba una expresión de evaluación en el cuadro de texto EvalExpression .
Nota:
La expresión debe evaluarse como un valor booleano. Cuando la expresión se evalúa como false, el bucle deja de ejecutarse.
Opcionalmente, escriba una expresión de asignación en el cuadro de texto AssignExpression .
Opcionalmente, haga clic en Expresiones y, en la página Expresiones, cree expresiones de propiedad para las propiedades del contenedor Bucle For. Para más información, vea Agregar o cambiar una expresión de propiedad.
Haga clic en Aceptar para cerrar el Editor de bucles For.
Cuadro de diálogo del editor de bucle for
Use la página Bucle For del cuadro de diálogo Editor de bucles For para configurar un bucle que repita un flujo de trabajo hasta que una condición específica se evalúe como False.
Para obtener información acerca del contenedor de bucles For y cómo utilizarlo en paquetes, vea For Loop Container.
Opciones
InitExpression
Opcionalmente, escriba una expresión que inicialice los valores utilizados por el bucle.
EvalExpression
Escriba una expresión para evaluar si el bucle debe detenerse o continuar.
AssignExpression
Opcionalmente, escriba una expresión que cambie una condición cada vez que se repita el bucle.
Nombre
Indique un nombre único para el contenedor del bucle For. Este nombre se utiliza como etiqueta en el icono de tarea.
Nota:
Los nombres de objeto deben ser únicos en un paquete.
Descripción
Proporcione una descripción del contenedor For Loop.
Usar expresiones con el contenedor For Loop
Al configurar el contenedor de bucles For especificando una condición de evaluación, valor de inicialización o valor de asignación, puede usar literales o expresiones.
Las expresiones pueden incluir variables. La ventaja de usar variables es que se pueden actualizar en tiempo de ejecución, lo que hace que los paquetes sean más flexibles y fáciles de administrar. La longitud máxima de una expresión es 4000 caracteres.
Al especificar una variable en una expresión, el nombre de la variable debe venir precedido por el signo (@). Por ejemplo, para una variable llamada Counter, escriba @Counter en la expresión que usa el contenedor de bucle For. Si se incluye la propiedad de espacio de nombres en la variable, debe escribir la variable y el espacio de nombres entre paréntesis. Por ejemplo, en el caso de una variable Counter en el espacio de nombres MyNamespace , escriba [@MyNamespace::Counter].
Las variables que usa el contenedor For Loop deben definirse en el ámbito del contenedor For Loop o en el ámbito de cualquier contenedor situado en un nivel superior de la jerarquía de contenedores del paquete. Por ejemplo, un contenedor de bucles For puede usar variables definidas en su ámbito y también variables definidas en el ámbito de paquetes. Para más información, consulte Variables de Integration Services (SSIS) y Uso de variables en paquetes.
La gramática de expresiones de SSIS proporciona un conjunto completo de operadores y funciones para implementar expresiones complejas usadas para la evaluación, inicialización o asignación. Para obtener más información, consulte Expresiones de Integration Services (SSIS).