如何执行下一个任务(添加条件并将参数从2个数据源传递到一个存储过程)

时间:2013-01-18 12:07:05

标签: sql-server ssis

我有两张excel文件。我需要做什么:

  1. 从第一张纸上读取ID(只有一行,一列)
  2. 检查db中是否有带有此ID的记录(图1)
  3. enter image description here

    1. 如果满足以前的条件,那么我需要从第二张(多行)中读取数据
    2. 将#3中的数据和#1中的id传递给存储过程并执行它。

      该图读取带有用户数据的第二张纸并传递给存储过程。 enter image description here

    3. 但是我不明白如何将它组合成一个方案以使1-4工作。

1 个答案:

答案 0 :(得分:1)

所以...如果我认为我正确理解了您的问题...您要做的是将Excel ID值存储在变量中,然后将其作为派生列添加到第2部分中的数据流中。 / p>

所以你的包应该是这样的:

执行SQL任务

ConnectionType EXCEL,Connection是您的Excel连接,Result Set是“Single row”,SQL Statement是“从[SheetNameWithDataSourceIDGoesHere $]中选择前1 *”。结果集将结果名称“0”映射到变量名称(我们称之为User :: DataSourceID。)

DATA FLOW TASK

消息:Excel表格

DERIVED COLUMN:将其称为DataSourceID,值为User :: DataSourceID。

查看:反对您查找数据源的任何地方。无匹配输出将进入数据转换和存储过程。


如果您想获得想象,可以在第一个之后包含第二个 Excecute SQL Task ,使用 SQLStatementSource 的表达式对包含的数据库表运行数据源ID。

类似的东西:

"select count(1) as DataSourceIDExists from DATASOURCELOOKUPTABLE where DataSourceID = " + (DT_WSTR,50)@User::DataSourceID

然后将其映射到“单行”ResultSet,结果名称“0”映射到 User :: DataSourceIDExists 。然后在该任务之后,使用表达式为

的优先约束
(User::DataSourceIDExists == 0)

确定您是否转到数据流任务以加载Excel数据。既然听起来你还不是一个全面的SSIS专家,这可能是一个很好的学习机会。