2016-09-20 134 views
0

我正在創建一個使用Execute sql taskScript task.SSIS程序包,該程序包根據參數顯示錶格內容。在Execute Sql任務的參數中分配多個值--SSIS

我給下面的查詢在執行-SQL任務

Select * from Production.Product Where ProductID in (316,324) 

我需要的值316, 324指定到parameter並填充結果集。如何在p arameter variable中分配多個值?請幫助

回答

1

如果您的CSV列表具有小於2000米的價值觀 - 你可以創建一個字符串變量PARAMS與價值316, 324和下面的表達式另一個字符串變量sql_select中:

"Select * from Production.Product Where ProductID in ("[email protected][User::Params]+")" 

在你執行任務選擇變量作爲查詢源並將User :: SQL_Select定義爲源。表達式將在您訪問時進行評估,並將產生select語句。

+0

謝謝。但我不知道如果csv列表超過2000會發生什麼情況?是ssis的限制嗎? – bmsqldev

+0

@bmsqldev,它是MS SQL的限制。它可以處理不超過2100個參數,這意味着在SELECT查詢中,您可以不超過2099個常量或值,其中1個參數是查詢文本本身。我的答案大致縮減到2000年。 – Ferdipux

+0

感謝ferdipux。有用 – bmsqldev

1
DECLARE @String nvarchar(Max),@ProductID varchar(25) 

SET @productID ='316,324' 

SET @String='' 
SET @String='Select * from Production.Product Where ProductID in ('[email protected]+') ' 
Print @String 
EXECUTE (@String) 
+0

謝謝。我將不得不嘗試這個 – bmsqldev