如何在SSIS 2008创造查询动态?(How to create a dynamic IN que

2019-10-29 07:30发布

我有一个可变@csv持有逗号分隔值,例如:-a -a,B -a,B,C

我需要将它传递在数据流我的OLE DB源的查询创建一个查询,如:

SELECT COUNT(1)从表WHERE COL1 IN @csv

因此,如果@ CSV =“A,B”,那么在内部它应该分解成

SELECT COUNT(1)从表WHERE COL1 IN 'A', 'B'

这怎么能在2008年SSIS做到最好? 我能避免脚本组件来创建一个动态查询并将其存储在一个变量?

Answer 1:

这怎么能在2008年SSIS做到最好? 我能避免脚本组件来创建一个动态查询并将其存储在一个变量?

最简单/最好的办法仍然是用脚本组件。

否则,你可以:

  1. 使用CSV作为数据源,并选择你的结果
  2. 使用和“添加栏”工具绕结果添加您的SQL查询的其余部分
  3. 结果存储到一个变量
  4. 然后用的OLE DB数据源与“从变量查询”


Answer 2:

您可以创建一个变量来存储查询和使用表达式,如组成它的价值:

变量列表:

选项1:在使用OLE DB的情况下 ,选择SQL Command from variable ,并绑定变量@sqlQuery:

选项2:在使用ADO.NET的情况下 ,进入数据流任务的性能和扩展Expressions ,并绑定ADO.NET源> SqlCommand时可变@sqlQuery +确保ADO.NET Source > Data access modeSQL Command

方案3:在使用的情况下, Execute SQL Task ,拓展Expressions和SqlStatementSource与变量绑定@sqlQuery +确保SQL Source TypeDirect Input



文章来源: How to create a dynamic IN query in SSIS 2008?