首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次循环10个记录,并将其赋值给变量

问一次循环10个记录,并将其赋值给变量
EN

Stack Overflow用户
提问于 2019-02-05 01:10:49
回答 1查看 515关注 0票数 3

我有一个包含900条记录的表。我想一次获取10条记录,并将其分配给变量。下一次我在SSIS中运行for each循环任务时,它将循环另外10条记录并覆盖变量。任何帮助都将受到高度的感谢。

我有一张这样的桌子

代码语言:javascript
复制
EMPID
0001
00045
00067
00556
00078
00345
00002
00004
00005
00006
00007
00008

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

代码语言:javascript
复制
select * from Dbo.JPKGD0__STP
where EMPID in ?

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 04:51:42

第(1)步-创建变量

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

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

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

代码语言:javascript
复制
"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:

代码语言:javascript
复制
SELECT Count(*) FROM Dbo.JPKGD0__STP;

并将结果存储在@[User::RowCount]变量中(有关详细信息,请使用)。

第(3)步- For循环容器

现在,添加一个包含以下表达式的For Loop Container:

  • InitExpression: @[User::Counter] = 0
  • EvalExpression: @[User::Counter] < @[User::RowCount]
  • AssignExpression: @[User::Counter] = @[User::Counter] + 10

在For loop container中,添加一个具有OLE DB Source和destination的Data flow task。在“OLE DB源”中,选择Access Mode作为SQL Command from variable,然后选择@[User::strQuery]作为源。

参考文献

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54521074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档