1

好的,我有一个简单的过程...

  1. 读取一个表并获取“StatusID”为 1 的行。简单。

    从 PreorderStatus 中选择 ProductID,其中 StatusID = 1

  2. 对于从该查询返回的每一行,执行一个操作。为简单起见,我们只修改原始表,将“StatusID”设置为 2。

    更新 PreorderStatus 设置 StatusID = 2 其中 ProductID = @ProductID

为了在 SSIS 中执行此操作,我使用第一条语句创建了一个简单的“执行 SQL 任务”。在编辑器中,我将结果集设置为返回完整结果集,并将结果名称设置为 0 以填充名为 ReadySet 的对象变量。

然后将输出路由到 For Each Loop 容器。枚举器设置为Foreach ADO 枚举器,对象源变量设置为上面的 ReadySet 变量。我还将变量 v_ProductID 映射到索引 0。

在 Foreach 循环开始处设置断点表明变量设置正确。伟大的!!现在进入第二步......

现在我在 foreach 容器中放置了一个新的 SQL 任务。现在我有一个挠头。我如何在 SQL 语句中实际使用该变量。简单地使用“v___ProductID”或“User::v_ProductID”似乎不起作用。映射参数似乎是个好主意(得到了@ProductID 和一切!),但这似乎也不起作用。

我觉得我错过了一些非常简单的东西,但不知道是什么。谢谢你的帮助!!

4

2 回答 2

1

我认为有更好的方法。以下是大概的步骤:

  1. 将 DataFlow 任务拖到设计图面上。
  2. 打开它并将 OLE DB 源和 OLEDB 命令组件添加到设计图面。
  3. 修改源以使用您描述的查询。
  4. 将源连接到 Command 组件。
  5. 修改命令组件以使用“Update PreorderStatus set StatusID = 2 where ProductID = ?” 查询和参数映射页面映射?来自数据源的输入的变量。

高温高压

于 2009-12-09T22:50:27.170 回答
0

当我想使用执行 sql 任务并根据变量改变某些内容时,我使用存储过程并将变量作为过程的输入参数。

然后在执行 SQL 任务中设置参数并将 SQL 语句设置为:

exec myproc ?
于 2009-12-09T22:24:50.840 回答