2009-07-10 14 views
0

Ich habe eine OLE DB-Befehlskomponente in einem SSIS-Paket, das eine Update-Anweisung für eine SQL-Tabelle ausführt. Nun, meine Aussage zunächst ist wie:Dynamische Abfrage in SSIS-Paket

update myTable set columnA=?, columnB=? where columnC=? 

Wo die drei 's sind Eingänge in meine Komponente aus einer anderen bedingten Teil Komponente „?“. Ich kann jeden Spaltennamen mit jedem Eingabeparameter (dem?) Verknüpfen, also Spalte A = param0, Spalte B = param1.

Jetzt ist meine Abfrage komplexer, muss ich tun;

update myTable set columnA=(param1+param2), columnB=(param2) where columnC=param1*param2 

Wie kann ich dies in SSIS tun?

Antwort

2

Warum nicht nur eine abgeleitete Spalte vor dem Befehl update, und diese Felder berechnen?

Erstellen Sie neue Spalten mit Namen/Wert als solche:
columnA = param1 + param2:
columnB = param2:
columnC = param1 * param2:

dann die Ausgabe an den Update-Befehl umleiten und Verwende sie als Parameter. Auf diese Weise müssen Sie in Ihrer Abfrage keine Berechnungen durchführen, was zu einem viel saubereren IS-Paket führt.

+0

Ja, das habe ich getan. – Saobi

1

Ja. Berechnen Sie diese Werte einfach in einer Transformation für abgeleitete Spalten und verwenden Sie sie anstelle der Parameter, die Sie jetzt verwenden.