Foreach Loop Microsoft SSIS – équivalent à une déclaration de rupture

Au sein d'une boucle Foreach dans SSIS, y a-t-il un moyen, si une tâche échoue, de sortir de la boucle pour l'itération suivante?

Je parcourt des files xml et j'effectue une search en utilisant des valeurs dans ce file, si la search ne renvoie aucune valeur que je voudrais signaler à ce sujet et n'effectue aucune autre tâche pour ce file. S'il n'y a pas d'équivalent à une déclaration de rupture, comment cela peut-il être réalisé autrement?

    Vous pouvez également utiliser une boucle 'for' avec une condition booleanne telle que la boucle alors qu'une variable est égale à true. Ensuite, lorsque vous voulez sortir de cette boucle, changez simplement la valeur de cette variable en false et vous sortirez de la boucle.

    Répondre à votre question … une boucle foreach, boucle sur une collection et d'autres constructions énumérables tant qu'elles existent pour faire une boucle. Vous pouvez donc find une solution de contournement ou simplement utiliser une boucle 'for' au lieu d'une boucle 'foreach'. De cette façon, vous avez plus d'un contrôle de type de programmation sur la boucle, car vous définissez l'expression de condition.

    La search peut redirect si aucune valeur n'est renvoyée, loin du stream réussi.

    Vous avez besoin du rest de votre boucle foreach pour savoir qu'il y a eu une erreur. Par conséquent, une méthode consiste à définir une variable de package sur erreur, juste avant la journalisation.

    Ensuite, dans la flèche "succès" après votre search, vous pouvez la transformer en réussite conditionnelle, de sorte qu'elle ne se déroule que si la valeur de la variable n'est pas la valeur de l'erreur.

    Donc j'ai juste eu ce problème et l'ai résolu en a) dirigeant la tâche échouée vers une tâche fictive qui n'a rien fait et terminé et b) en plaçant la 'FORCEEXECUTIONRESULTS' à 'SUCCESS', qui a parcouru juste comme je le voulais.

    Et encore une autre façon serait de mettre un conteneur de séquence dans votre boucle, puis mettre les étapes conditionnelles dans le conteneur de la séquence. Toute décision qui devrait "continuer" n'a besoin que de quitter le conteneur de la séquence. Très simple à implémenter avec tout le contrôle que vous pourriez souhaiter, y compris le recouvrement des erreurs.