2017-06-09 2 views
2

Ich versuche, eine temporäre Tabelle zu erstellen und Daten in die temporäre Tabelle innerhalb einer Task "SQL ausführen" innerhalb eines foreach-Schleifencontainers einzufügen.Parameterzuordnung mit einem Task "SQL ausführen"

Hier sind die SQL-Aufgaben

IF OBJECT_ID('TEMPDB.DBO.#TEMP') IS NOT NULL 
DROP TABLE #TEMP 
GO 

CREATE TABLE #TEMP 
     (...); 

INSERT INTO #TEMP 
     SELECT (...) 
    FROM table t1 INNER JOIN table2 t2 
    ON t1.id = t2.table1_id 
WHERE t1.value = ? 

ich einen Parameter in der WHERE-Klausel haben wollen, aber wenn ich versuche, es füge ich diesen Fehler.

"Mehrstufiger OLE DB-Vorgang erzeugte Fehler. Überprüfen Sie jeden OLE DB-Statuswert, falls verfügbar. Es wurde keine Arbeit ausgeführt.". Mögliche Fehlerursachen: Probleme mit der Abfrage „ResultSet“ Eigenschaft nicht richtig eingestellt, Parameter nicht richtig eingestellt ist, oder nicht richtig hergestellte Verbindung „

Wenn ich hart Code der Wert in der Where-Klausel der Einsatz perfekt funktioniert

..

Was ich falsch auf meinem Parameter-Mapping zu tun?

Hier sind meine Parameter-Mapping Einstellungen enter image description here

auch bin ich nicht in der Lage, eine gespeicherte zu verwenden Verfahren.

Antwort

1

-Expressions Tab Gehen Sie einfach wie im Screenshot gezeigt Sie zur Verfügung gestellt und schreiben Sie den folgenden Ausdruck zu SqlStatmentSource Eigenschaft

"IF OBJECT_ID('TEMPDB.DBO.#TEMP') IS NOT NULL 
DROP TABLE #TEMP 
GO 

CREATE TABLE #TEMP 
     (...); 

INSERT INTO #TEMP 
     SELECT (...) 
    FROM table t1 INNER JOIN table2 t2 
    ON t1.id = t2.table1_id 
WHERE t1.value = '" + @[User::Where_Variable] + "'" 

enter image description here

+0

Dank! Das hat sehr geholfen und ich habe es funktioniert. Ich musste die Drop-Anweisung in eine separate SQL-Aufgabe verschieben. –

+0

@DericPlummer glücklich zu helfen – Hadi

0

Füllen Sie eine Variable mit Ihrem gesamten SQL-Skript und verwenden Sie die Variable als Ihren SQLSourceType in Ihrer Task SQL ausführen.

Verwandte Themen