2014-03-05 26 views
0

我在SSIS 2012中有一個包含控制流級執行SQL任務的包。如何從SSIS包中的執行SQL任務返回兩個記錄數到用戶變量

有問題的SQL通過SQL合併語句執行Upsert。我想要做的是返回插入記錄的計數和記錄更新(無刪除在這裏擔心)。我使用輸出選項將更改後的recs輸出到表變量。

我試圖返回值:

Select Count(*) as UpdateCount from @mergeOutput where Action = 'Update' 

Select Count(*) as InsertCount from @mergeOutput where Action = 'Insert' 

我試過設置的結果集於單行集和全行集中,但我沒有看到任何東西返回到我爲它們設置的包變量(intInsertcount和intUpdatecount)。

我在做什麼錯?

謝謝。

回答

1

你應該嘗試以下操作:

Select UpdateCount = (Select Count(*) as UpdateCount from @mergeOutput where Action = 'Update'), 
InsertCount = (Select Count(*) as InsertCount from @mergeOutput where Action = 'Insert') 

使用單一的結果集這應該給你的線沿線的輸出

UpdateCount | InsertCount 
#   | # 

然後,只需映射結果集改變各名結果並使用斷點來測試並確保變量通過過程更新。

這是我使用的時候,我想在同一個查詢中返回來自不同表的多個結果集,但是我不知道它如何處理merge語句的輸出。

+0

我沒有看到他的解決方案的任何問題。不知道爲什麼有人低估了它。 –

+0

謝謝彼得,我會試試看。但是,你能澄清我如何映射到包變量? – CraigBob

+0

謝謝彼得。它像一個魅力。 – CraigBob

0

設置執行SQL命令輸出爲單行

的SqlCommand爲:

Select sum(case when Action='Update' then 1 else 0 end) Update_count, 
sum(case when Action='Insert' then 1 else 0 end) Insert_count 
from @mergeOutput; 

結果集選項卡中點擊添加按鈕;將您的變量設置爲指向上述查詢的2個輸出,位置如下:

0 => intUpdatecount; 1 => intInsertcount

相關問題