SSIS Forloop: Wert zuweisen zu variable name basierend auf iteration Nummer
Ich bin versucht, einen ForLoop container zu weisen Werte bis zu 10 verschiedene Variablen....
var1
var2
.
.
.
var10
basiert auf der iteration Nummer.
Brauche ich die Schleife zu Durchlaufen, eine bestimmte Anzahl von Zeiten, basierend auf einer Variablen zugewiesen wurde ein integer-Wert, der basierend auf einem Ergebnis einer Abfrage...das Teil funktioniert ganz gut.
Ich bin an einem Verlust, wie zu sagen, die forloop, welche variable zu verwenden, um den Wert zuzuweisen....dh wenn ich mich bei itereation #1 dann Wert zugewiesen var1, iteration #2 dann weisen Sie den Wert var2....und so weiter.
Jede Beratung wäre sehr geschätzt werden.
- Hmm... naja, was ist wirklich das problem? Ich meine, nehmen Sie einen Schritt zurück. Ist es eine absolute Voraussetzung, dass Sie am Ende mit, sagen wir, 20 Variablen namens Var1 durch Var20, gefüllt mit Werten von Iterationen 1 bis 20? Oder ist die eigentliche Anforderung, die Sie benötigen, zur Speicherung von Ergebnissen von X Anzahl der Iterationen von for-Schleifen-container, und in der Lage sein, um Sie später aufrufen?
- Hi, die Variablen sind nicht wirklich genannt var1...var20....Tippte ich einfach auf diese Weise, so dass die Frage Sinn macht. Was ich wirklich tun wollen ist, löschen Sie den Fremdschlüssel einer Tabelle, so dass wir können kürzen Sie die Tabelle, und erstellen Sie dann die Fremdschlüssel. Jemand erstellt einen neuen Fremdschlüssel, also die alten SSIS-Paket nicht auf das abschneiden Schritt, wie es war, 1 Schlüssel noch nicht gelöscht. Ich möchte zum speichern aller foregin key-Namen, löschen Sie und neu erstellen Sie, unabhängig davon, ob jemand umbenennt, löscht oder addes neue Fremdschlüssel auf die Tabelle.
- Also ja, die eigentliche Voraussetzung ist die Speicherung von Ergebnissen von X-Anzahl von Iterationen in der Lage sein, um Sie später aufrufen....:-).
- Nun, der Grund, warum ich fragte, war um wirklich zu wissen, ob Sie hatte, dass Sie in Variablen. Hier ist ein link zu einem blog-post, dass die Gespräche über die Verwendung von Objekttyp-Variablen in SSIS, als ein String-array. Ich denke, dass Ihnen die Möglichkeit zum speichern der X-Werte, dann Durchlaufen und readd Sie. Ich bin nicht 100% sicher ich verstehen Ihren Fall, damit ich nicht kommentieren, aber dies sollte helfen, mit der Technik für die Lösung: rad.pasfu.com/index.php?/archives/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während ich bin nicht 100% sicher, warum Sie würde wollen, dass dieser Ansatz, um die Frage zu beantworten, könnte man 2 Routen
In einem 2005-2008R2 Umfeld, Ihre Steuern fließen würde wahrscheinlich so Aussehen
Habe ich definiert 11 Variablen, die alle vom Typ Int32. Theke und dann Variable1 durch Variable10.
Meine For-Schleife ist so konfiguriert, wie
Die Zuordnung des aktuellen Wertes zu einer Variablen wird behandelt in einem Skript-Task. Ich habe die Counter-variable, die als ein nur-lese-variable, und Variable1-10 gelesen werden, schreibt. Dann habe ich eine grundlegende Switch-Anweisung in es zu handhaben die Zuordnung
Der 2012-Version von SQL Server bietet out of the box ' Ausdruck Aufgabe. Wenn Sie bevorzugen dieses Vorgehen und sind nicht auf 2012, die Proben Projekt hatte einen Ausdruck Aufgabe, die Sie erstellen und auf Ihrem server installieren.
Auf jeden Fall, Sie Gebrauch machen von Rangfolgeneinschränkungen von
Expression and Constraint
und testen Sie dann Ihren Wert in es.Selbst wenn ich hatte einen 2012 installation, würde ich wahrscheinlich immer noch mit der code-Weg als ich denke, es ist ein sauberer Ansatz. Beide Ansätze, jedoch lassen Sie mit hard-codiert Zuordnungen der Wert VariableN. @STLRick ist (Missouri darstellen!) dachte die Speicherung einer komplexen variable in eine variable des Typs "Object" wäre wahrscheinlich ein bevorzugter Ansatz, obwohl, wie ich zugelassen habe, nicht ganz zu verstehen, warum Sie wollen würde, um zu speichern off die Werte einer For-Schleife so, als würden Sie bereits wissen, Ihre Bereiche (auch wenn basierend auf dynamischen initial-und terminal-Werte)