【问题标题】:Loop 5 records at a time and assign it to variable一次循环 5 条记录并将其分配给变量
【发布时间】:2012-12-24 03:03:13
【问题描述】:

我有一个包含 811 条记录的表。我想一次获取五条记录并将其分配给变量。下次我在 SSIS 中运行foreach 循环任务时,它将循环另外五个记录并覆盖变量。我试过用光标做,但找不到解决方案。任何帮助将不胜感激。我有这样的表格,例如

ServerId ServerName
1         Abc11
2         Cde22
3         Fgh33
4         Ijk44
5         Lmn55
6         Opq66
7         Rst77
.           .
.           .
.           .

我希望查询应该采用如下前五个名称并将其分配给变量

ServerId ServerName
1         Abc11
2         Cde22
3         Fgh33
4         Ijk44
5         Lmn55

然后下一个循环取另外五个名称并覆盖变量值,依此类推,直到最后一条记录被消耗。

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    考虑到 ltn 的回答,这是您可以实现限制 SSIS 中的行的方法。

    设计看起来像

    第 1 步:创建变量

      Name       DataType 
      Count        int
      Initial      int
      Final        int
    

    第 2 步:为第一个执行 SQL 任务编写 sql 以存储计数

      Select count(*) from YourTable
    

    在此任务的General 选项卡中,选择结果集为Single Row

    在 ResultSet 选项卡中将结果映射到变量

      ResultName       VariableName
        0               User::Count
    

    步骤 3:在 For 循环容器中输入如下所示的表达式

    第 4 步:在 For 循环中拖动一个执行 SQL 任务并编写表达式

    在参数映射中映射initial变量

      VariableName    Direction   DataType   ParameterName   ParameterSize
       User::Initial   Input       NUMERIC     0                -1
    

    结果集选项卡

      Result Name     Variable Name
       0                 User::Final
    

    在 DFT 中,你可以编写 sql 来获取特定的行

    点击参数并选择变量INITIALFINAL

    【讨论】:

      【解决方案2】:

      如果您的数据不会在分页周期之间更新并且排序顺序始终相同,那么您可以尝试类似的方法:

      CREATE PROCEDURE TEST
      (
          @StartNumber INT,
          @TakeNumber INT
      )
      AS
      SELECT TOP(@TakeNumber) 
          *
      FROM(
          SELECT
              RowNumber=ROW_NUMBER() OVER(ORDER BY IDField DESC),
              NameField
          FROM 
              TableName
      )AS X   
      WHERE RowNumber>=@StartNumber
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-05
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        相关资源
        最近更新 更多