2009-01-13 20 views
8

Dentro de un bucle Foreach en SSIS, ¿hay alguna forma de que si una tarea falla, se puede salir del ciclo hasta la siguiente iteración?Foreach Loop Microsoft SSIS: equivalente a la declaración de interrupción

Estoy haciendo un bucle sobre archivos xml y realizando una búsqueda utilizando valores dentro de este archivo, si la búsqueda no devuelve ningún valor me gustaría informar sobre esto y luego no realizo ninguna otra tarea para este archivo. Si no hay un equivalente a una declaración de interrupción, ¿de qué otro modo se puede lograr esto?

Respuesta

4

También podría usar un bucle 'for' con una condición booleana como bucle mientras una variable es igual a true. Luego, cuando desee salir de ese bucle, simplemente cambie el valor de esa variable a falso y luego saldrá del bucle.

Respondiendo a su pregunta ... un bucle foreach, bucles sobre una colección y otras construcciones enumerables, siempre que exista un bucle. De modo que puede encontrar una solución alternativa o simplemente usar un bucle 'for' en lugar de un bucle 'foreach'. De esta forma, tiene más control de tipo de programación sobre el ciclo porque establece la expresión de condición.

0

La búsqueda puede redirigir si no se devuelven los valores, lejos del flujo correcto.

Necesita el resto de su ciclo foreach para saber que ha habido un error, por lo que una forma sería establecer una variable de paquete en caso de error, justo antes de realizar el registro.

Luego, en la flecha 'éxito' después de su búsqueda puede cambiarlo a un éxito condicional, de modo que solo prosiga si el valor de la variable no es el valor del error.

0

Así que acabo de tener ese problema y lo resolvió a) dirigiendo la tarea fallida a una tarea ficticia que no hizo nada y finalizó yb) estableciendo 'FORCEEXECUTIONRESULTS' en 'SUCCESS', que se ejecutó exactamente como yo quería a.

0

Y otra forma más sería poner un contenedor de secuencia en su bucle y luego colocar los pasos condicionales en el contenedor de secuencia. Cualquier decisión que debería 'continuar' solo necesita salir del contenedor de secuencia. Muy simple de implementar con todo el control que podría desear, incluido el error de captura.

Cuestiones relacionadas