2010-10-06 58 views
0

我有一个可变@csv持有逗号分隔值,例如: -a -a,B -a,B,C如何在SSIS 2008中创建动态IN查询?

我需要通过它在查询在我的OLE DB源在一个数据流创建查询,例如:

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

所以如果@ CSV = “A,b”,那么在内部应该解析成

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

这怎么能在SSIS 2008中最好地实现?我可以避免脚本组件创建动态查询并将其存储在变量中吗?

回答

0

如何在SSIS 2008中实现最佳效果?我是否可以避免脚本部件 创建动态查询并将 存储在变量中?

最简单/最好的方式仍然是一个脚本组件。

否则你:

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

您可以创建一个variab文件来存储查询和使用表达式,像构成它的值:

<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源>的SqlCommand与可变@sqlQuery +确保ADO.NET Source > Data access modeSQL Commandenter image description here enter image description here

方案3:在使用Execute SQL Task,展开Expressions和SqlStatementSource与可变@sqlQuery结合+确保的情况下SQL Source TypeDirect Inputenter image description here