在SQL任务[SSIS]中使用Foreach循环容器中的变量

时间:2009-12-09 17:12:55

标签: sql-server-2005 ssis foreach-loop-container

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

  1. 读取表格并获取行 “StatusID”为1.简单。

    从PreorderStatus中选择ProductID = 1

  2. 的ProductID
  3. 从那里返回的Foreach行 查询,执行操作。对于 简单的缘故,让我们修改 原始表设置 “StatusID”为2。

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

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

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

    在Foreach循环开始时设置断点显示正确设置的变量。大!!现在进入第二步......

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

    我觉得我错过了一些非常简单但却无法分辨的东西。谢谢你的帮助!!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

当我想使用执行sql任务并根据变量改变某些东西时,我使用存储过程并使变量成为proc的输入参数。

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

exec myproc ?