0

我正在尝试在 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 语句吗?

任何帮助是极大的赞赏。

4

1 回答 1

4

我创建了一个简单的控制流来向您展示我认为您所追求的

在此处输入图像描述

我从一个执行 SQL 任务开始生成一个基本表。您可能会在此处使用逻辑来确定起始编号和/或终止值

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

3 个变量,范围为包级别

在此处输入图像描述

我配置 For 循环(不是您的问题所标记的 foreach),就像一个经典的 for 循环一样。在这里,我为我的 SSIS 变量 @currentNumber 赋值

在此处输入图像描述

在我的执行 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;

在此处输入图像描述

于 2013-11-05T21:23:50.813 回答