一次循环10条记录并将其赋值给变量 [英] Loop 10 records at a time and assign it to variable

查看:87
本文介绍了一次循环10条记录并将其赋值给变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含900条记录的表。 我想一次获得10条记录,并将其分配给变量。 下次我在SSIS中运行For Each循环任务时, 它将循环另外10条记录并覆盖变量。 我们将非常感谢您的帮助。

我有这样的桌子,例如

EMPID
0001
00045
00067
00556
00078
00345
00002
00004
00005
00006
00007
00008

这是要我试过执行SQL任务把900条记录拉到变量,把执行SQL任务连接到For Each循环,里面For Each循环有数据流任务,源有SQL查询,目标是表。

select * from Dbo.JPKGD0__STP
where EMPID in ?

但这将在1循环中传递每个Empid,所以我希望每次传递10个Empids。

如果我需要使用不同的方法/或其他任务来实现这一点,请告诉我。

推荐答案

步骤(1)-创建变量

您必须创建两个int类型的变量:

  • @[User::RowCount]&>类型int
  • @[User::Counter]&>类型int
  • @[User::strQuery]>;>;类型字符串

将以下表达式分配给@[User::strQuery]

"SELECT  EMPID
FROM     Dbo.JPKGD0__STP
ORDER BY EMPIDASC 
OFFSET  " + (DT_WSTR,50)@[User::Counter]  + " ROWS 
FETCH NEXT 10 ROWS ONLY "

第(2)步-获取行数

首先,使用以下命令添加一个Execute SQL Task

SELECT Count(*) FROM Dbo.JPKGD0__STP;

并将结果存储在@[User::RowCount]变量中(check this link了解详细信息)。

第(3)步-For循环容器

现在,添加一个For Loop Container,表达式如下:

  • InitExpression:@[User::Counter] = 0
  • EvalExpression:@[User::Counter] < @[User::RowCount]
  • AssignExpression:@[User::Counter] = @[User::Counter] + 10
For loop container内,添加一个Data flow task,其中包含一个OLE DB源和一个目标。在OLE DB源中,选择Access Mode作为SQL Command from variable,然后选择@[User::strQuery]作为源。


参考资料

这篇关于一次循环10条记录并将其赋值给变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆