2013-08-01 42 views
1

林我想嘗試並運行下面的SQL代碼:SSIS 2008如何使用SSIS 2008 使用EXEC

declare @test nvarchar(100) 
set @test = 'Select Distinct Area From dbo.udf_RiskManagementPlan('') Where Area is not Null And Area != '''; 

if exists (select object_id from sys.columns where object_id = object_id('dbo.udf_RiskManagementPlan') and name = 'Area') 

exec sp_executesql @test 

Else select Null As Area 

它工作在SQL同治工作室罰款,但是當我試圖把它放在OLEDB來源我不斷收到錯誤關於語法

我試圖將整個代碼中的變量值,只是調用還是給了同樣的語法錯誤

我已經感覺這更多的是SSIS的問題處理存儲過程和參數那麼synta x,但我似乎找不到方法

回答

1

其實在SSIS中你不能把這種表達放在源代碼中。將它分成部分:

  1. 將與EXEC dbo.udf_RiskManagementPlan一個SQL任務塊中,設置輸入/輸出參數,以獲得結果(例如@SQLTaskResult

    Control flow

  2. 在正處理:設置一個變量Source_SQL到: DTS.Variables["Source_SQL"].Value = 'Select Distinct Area From '+DTS.Variables["SQLTaskResult"].Value+' Where Area is not Null And Area != ''

  3. 錯誤/無程序或其他錯誤/設置Source_SQLElse select Null As Area類似的方式。雙擊正確的連接,並設置ValueFalure

  4. 繼續進行數據流 - 設置OLE DB從一個變量OLE DB Source Editor

動態讀取源SQL