如何在SSIS 2008中创建动态IN查询?

时间:2010-10-06 06:11:52

标签: sql-server-2008 ssis

我有一个变量@csv,它包含逗号分隔值,例如: -一个 -a,B -a,B,C

我需要在数据流中的OLE DB源中的查询中传递它以创建查询,例如:

SELECT COUNT(1)FROM表WHERE col1 IN @csv

因此,如果@ csv =“a,b”,那么它应该在内部解析为

SELECT COUNT(1)FROM table WHERE col1 IN'a','b'

如何在SSIS 2008中实现这一目标?我可以避免脚本组件创建动态查询并将其存储在变量中吗?

2 个答案:

答案 0 :(得分:1)

  

如何在SSIS中实现这一目标   2008年?我可以避免使用脚本组件吗?   创建动态查询和存储   它在一个变量?

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

否则你可以:

  1. 使用csv作为数据源并选择结果
  2. 使用和“添加列”工具在结果
  3. 周围添加其余的SQL查询
  4. 将结果存储到变量
  5. 然后使用OLE DB数据源和“来自变量的查询”

答案 1 :(得分:1)

您可以创建一个变量来存储查询并使用表达式组合其值,如:

<code>enter image description here</code>

变量列表:

enter image description here

选项1:如果使用OLE DB ,请选择SQL Command from variable并绑定变量@sqlQuery: enter image description here

选项2:如果使用ADO.NET ,请转到数据流任务的属性并展开Expressions并绑定ADO.NET源&gt;带变量@sqlQuery的SqlCommand +确保ADO.NET Source > Data access modeSQL Commandenter image description here enter image description here

选项3:如果使用Execute SQL Task ,请展开Expressions并使用变量@sqlQuery绑定SqlStatementSource +确保SQL Source Type为{ {1}}: enter image description here