代码之家  ›  专栏  ›  技术社区  ›  Craig

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

  •  1
  • Craig  · 技术社区  · 14 年前

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

    1. 读取表并获取 “statusID”为1。简单。

      从Preorderstatus中选择productID,其中statusID=1

    2. 从该返回的foreach行 查询,执行操作。为了 简单点,让我们修改一下 要设置的原始表 “statusID”为2。

      更新preorderstatus set statusid=2,其中productid=@productid

    为了在SSIS中实现这一点,我用第一条语句创建了一个简单的“执行SQL任务”。在编辑器中,我设置了 结果集 归还 完整结果集 以及 结果名 设置为填充名为readyset的对象变量。

    然后将输出路由到for each循环容器。这个 枚举器 设置为 foreach ADO枚举器 以及从上面设置为readyset变量的对象源变量。我还将变量v_productid映射到索引0。

    在foreach循环的开头设置断点会显示变量设置正确。伟大的!!现在开始第二步……

    现在,我在foreach容器中放置了一个新的SQL任务。现在我有一个挠头器。如何在SQL语句中实际使用变量?仅仅使用“v_uuuProductID”或“user::v_ProductID”似乎不起作用。映射一个参数似乎是一个好主意(得到了@productid和所有东西!)但这似乎也不起作用。

    我觉得我错过了一些很简单的事情,但我不知道该怎么做。谢谢你的帮助!!

    2 回复  |  直到 14 年前
        1
  •  1
  •   unclepaul84    14 年前

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

    1. 将数据流任务拖到设计图面上。
    2. 打开它,向设计图面添加一个OLEDB源和OLEDB命令组件。
    3. 修改源以使用您描述的查询。
    4. 将源连接到命令组件。
    5. 修改命令组件以使用“update preorderstatus set statusid=2,其中productid=?”查询和在参数映射页上映射?来自数据源的输入变量。

    高温高压

        2
  •  0
  •   HLGEM    14 年前

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

    然后在执行SQL任务中设置参数,并将SQL语句设置为如下类型:

    exec myproc ?