Foreach-Schleife Microsoft SSIS - entspricht der Break-Anweisung

8

Innerhalb einer Foreach-Schleife in SSIS gibt es eine Möglichkeit, dass, wenn eine Aufgabe fehlschlägt, Sie aus der Schleife zur nächsten Iteration ausbrechen können?

Ich laufe über XML-Dateien und führe eine Suche mit Werten in dieser Datei durch, wenn die Suche keine Werte zurückliefert, über die ich berichten möchte, und dann keine anderen Aufgaben für diese Datei ausführe. Wenn es keine break-Anweisung gibt, wie sonst kann dies erreicht werden?

    
bobwah 13.01.2009, 10:31
quelle

4 Antworten

4

Sie können auch eine for-Schleife mit einer booleschen Bedingung wie Schleifen verwenden, während eine Variable gleich true ist. Wenn Sie dann aus dieser Schleife ausbrechen möchten, ändern Sie einfach den Wert dieser Variablen in false, und Sie werden dann aus der Schleife ausbrechen.

Beantworten Sie Ihre Frage ... eine foreach-Schleife, die eine Auflistung und andere aufzählbare Konstrukte durchläuft, solange sie existieren, um sie zu durchlaufen. Sie können also entweder einen Workaround finden oder einfach eine For-Schleife anstelle einer Foreach-Schleife verwenden. Auf diese Weise haben Sie mehr Kontrolle über die Schleife, weil Sie den Bedingungsausdruck gesetzt haben.

    
Jobo 15.01.2009, 05:19
quelle
0

Die Suche kann umleiten, wenn keine Werte zurückgegeben werden, weg vom erfolgreichen Ablauf.

Sie brauchen den Rest Ihrer foreach-Schleife, um zu wissen, dass ein Fehler aufgetreten ist. Eine Möglichkeit wäre also, eine Paketvariable im Fehlerfall zu setzen, kurz bevor Sie die Protokollierung durchführen.

Dann können Sie nach dem Suchen im 'Erfolgspfeil' einen bedingten Erfolg ändern, so dass es nur weitergeht, wenn der Wert der Variablen nicht der Fehlerwert ist.

    
Rich 14.01.2009 14:34
quelle
0

Also hatte ich gerade dieses Problem und löste es, indem ich a) die gescheiterte Aufgabe auf eine Scheinaufgabe lenkte, die nichts tat und endete, und b) die "FORCEEXECUTIONRESULTS" auf "SUCCESS" setzte, die genau so durchlief, wie ich es wollte zu.

    
TheBigRedCup 15.12.2015 21:24
quelle
0
___ qstnhdr ___ Foreach-Schleife Microsoft SSIS - entspricht der Break-Anweisung ___ answer443161 ___

Die Suche kann umleiten, wenn keine Werte zurückgegeben werden, weg vom erfolgreichen Ablauf.

Sie brauchen den Rest Ihrer foreach-Schleife, um zu wissen, dass ein Fehler aufgetreten ist. Eine Möglichkeit wäre also, eine Paketvariable im Fehlerfall zu setzen, kurz bevor Sie die Protokollierung durchführen.

Dann können Sie nach dem Suchen im 'Erfolgspfeil' einen bedingten Erfolg ändern, so dass es nur weitergeht, wenn der Wert der Variablen nicht der Fehlerwert ist.

    
___ answer34299673 ___

Also hatte ich gerade dieses Problem und löste es, indem ich a) die gescheiterte Aufgabe auf eine Scheinaufgabe lenkte, die nichts tat und endete, und b) die "FORCEEXECUTIONRESULTS" auf "SUCCESS" setzte, die genau so durchlief, wie ich es wollte zu.

    
___ tag123foreach ___ foreach ist ein Schleifenkonstrukt, das ein bestimmtes Codeelement für jedes Element in einer Liste / Sammlung / einem Array ausführt. Im Gegensatz zu einer for-Schleife erfordert die foreach-Schleife nicht, dass der Coder eine Zählervariable beibehält, um Off-by-One-Fehler (Fencepost) zu vermeiden. Es wird empfohlen, eine einfache Iteration über das gesamte Array / Liste / Sammlung zu verwenden . ___ tag123assis ___ SSIS (Microsoft SQL Server Integration Services) ist eine Plattform zum Erstellen von Datenintegrations- und Datenumwandlungslösungen auf Unternehmensebene. SSIS wird verwendet, um ETL-Operationen durchzuführen; d. h. Daten extrahieren, transformieren und laden. ___ qstntxt ___

Innerhalb einer Foreach-Schleife in SSIS gibt es eine Möglichkeit, dass, wenn eine Aufgabe fehlschlägt, Sie aus der Schleife zur nächsten Iteration ausbrechen können?

Ich laufe über XML-Dateien und führe eine Suche mit Werten in dieser Datei durch, wenn die Suche keine Werte zurückliefert, über die ich berichten möchte, und dann keine anderen Aufgaben für diese Datei ausführe. Wenn es keine break-Anweisung gibt, wie sonst kann dies erreicht werden?

    
___ tag123sqlserver ___ Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem (RDBMS). Verwenden Sie dieses Tag für alle SQL Server-Editionen, einschließlich Compact, Express, Azure, Fast-Track, APS (früher PDW) und Azure SQL DW. Verwenden Sie dieses Tag nicht für andere Arten von DBMS (MySQL, PostgreSQL, Oracle usw.). Verwenden Sie dieses Tag nicht für Probleme bei der Software- und mobilen Entwicklung, es sei denn, es steht in direktem Zusammenhang mit der Datenbank. ___ answer445748 ___

Sie können auch eine for-Schleife mit einer booleschen Bedingung wie Schleifen verwenden, während eine Variable gleich true ist. Wenn Sie dann aus dieser Schleife ausbrechen möchten, ändern Sie einfach den Wert dieser Variablen in false, und Sie werden dann aus der Schleife ausbrechen.

Beantworten Sie Ihre Frage ... eine foreach-Schleife, die eine Auflistung und andere aufzählbare Konstrukte durchläuft, solange sie existieren, um sie zu durchlaufen. Sie können also entweder einen Workaround finden oder einfach eine For-Schleife anstelle einer Foreach-Schleife verwenden. Auf diese Weise haben Sie mehr Kontrolle über die Schleife, weil Sie den Bedingungsausdruck gesetzt haben.

    
___ antwort43923674 ___

Und noch ein anderer Weg wäre, einen Sequenzcontainer in die Schleife einzufügen und dann die bedingten Schritte in den Sequenzcontainer zu legen. Jede Entscheidung, die fortfahren soll, muss nur den Sequenzcontainer verlassen. Sehr einfach zu implementieren mit all der Kontrolle, die Sie wollen, einschließlich Fehlerabfangen.

    
___ tag123break ___ Eine break-Anweisung ist eine Flusssteuerungsfunktion, die von den meisten Programmiersprachen zur Verfügung gestellt wird und einen frühzeitigen Abbruch einer Schleife ermöglicht. Sobald eine break-Anweisung erreicht ist, wird ihre umschließende Schleife sofort verlassen. ___
bielawski 11.05.2017 19:02
quelle

Tags und Links