Loop 10 records at a time and assign it to variable(一次循环10条记录并将其赋值给变量)
本文介绍了一次循环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]
作为源。
参考资料
- Row Offset in SQL Server
- SQL Server OFFSET FETCH
- SSIS Basics: Using the Execute SQL Task to Generate Result Sets
- ORDER BY Clause (Transact-SQL)
这篇关于一次循环10条记录并将其赋值给变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:一次循环10条记录并将其赋值给变量


基础教程推荐
猜你喜欢
- 如何根据该 XML 中的值更新 SQL 中的 XML 2021-01-01
- 二进制文件到 SQL 数据库 Apache Camel 2021-01-01
- 在 MySQL 中:如何将表名作为存储过程和/或函数参数传递? 2021-01-01
- oracle区分大小写的原因? 2021-01-01
- 什么是 orradiag_<user>文件夹? 2022-01-01
- 在多列上分布任意行 2021-01-01
- 如何在 SQL 中将 Float 转换为 Varchar 2021-01-01
- 表 './mysql/proc' 被标记为崩溃,应该修复 2022-01-01
- mysql选择动态行值作为列名,另一列作为值 2021-01-01
- MySQL 中的类型:BigInt(20) 与 Int(20) 2021-01-01