2016-09-20 135 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