SSIS以某种方式使用Foreach容器

时间:2013-11-05 20:54:33

标签: ssis

我正在尝试在SSIS中使用Foreach循环容器来遍历一小组行,并将列'id'设置为变量。

我有以下变量:

  • @startNumber = 5
  • @maxNumber = 10

以下是我的循环在传统语法中的外观:

for (int i = @startNumber; i > @maxNumber ; i++)

这是我想要运行以更新行的TSQL代码:

UPDATE myTable SET id =  i
  1. 我会使用Foreach ADO枚举吗?
  2. 我的源变量是什么?
  3. 我将如何应用上述逻辑?
  4. 我是否会为更新添加执行TSQL规则?
  5. 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

我创建了一个简单的控制流程来向您展示我认为你在追求什么

enter image description here

我从一个执行SQL任务开始生成一个基本表。你可能在这里有逻辑来确定起始编号和/或终值

if not exists
(
SELECT * FROM sys.tables AS T WHERE T.name = 'FLC'
)
BEGIN
    CREATE TABLE dbo.FLC
    (
        currentID int
    );
END

3个变量,范围为包级别

enter image description here

我配置For循环(不是foreach,因为你的问题已被标记),就像经典for循环一样。这里我为我的SSIS变量@currentNumber

分配一个值

enter image description here

在我的执行SQL任务中(在for循环中)我使用@currentNumber作为我的任务的参数。

INSERT INTO
    dbo.FLC
(
    currentID
)
-- OLE DB & ODBC connections use ? for ordinal parameter
-- ADO.NET uses named parameters like @foo
SELECT ? AS currentID;

enter image description here