2017-06-09 48 views
2

我想創建一個臨時表並將數據插入到foreach循環容器內的執行SQL任務內的臨時表中。使用執行SQL任務的參數映射

這裏是SQL任務

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 = ? 

我想在WHERE子句,但參數每當我嘗試添加它,我得到這個錯誤。

「多步OLE DB操作生成錯誤。檢查每個OLE DB狀態值(如果可用),沒有工作完成。」。可能的故障原因:與查詢問題,未設置「的ResultSet」屬性正確,參數設置不正確,或連接不正確建立「

當我硬編碼在WHERE子句中插入完美的作品

值。

什麼我在我的參數映射做錯了嗎?

這裏是我的參數映射設置 enter image description here

還有我不能夠使用存儲程序。

回答

1

剛去Expressions Tab鍵截圖所示您提供,寫下面的表達式來SqlStatmentSource財產

"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

謝謝!這幫助了很多,我得到了它的工作。我最終不得不將drop語句移到單獨的sql任務中。 –

+0

@DericPlummer樂意提供幫助 – Hadi

0

用您的整個SQL腳本填充一個變量,並在您的執行SQL任務中將該變量用作SQLSourceType。