我有一张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
然后下一个循环取另外五个名称并覆盖变量值,依此类推,直到消耗掉最后一个记录。
答案 0 :(得分:5)
考虑到ltn的答案,这就是如何限制SSIS中的行。
设计看起来像
第1步:创建变量
Name DataType
Count int
Initial int
Final int
步骤2:对于第一个执行SQL任务,编写sql以存储计数
Select count(*) from YourTable
在此任务的General
选项卡中,选择ResultSet为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来获取特定的行
点击参数,然后选择变量INITIAL
和FINAL
答案 1 :(得分:1)
如果您的数据不会在分页周期之间更新且排序顺序始终相同,那么您可以尝试类似的方法:
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