我有一个包含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。
如果我需要使用不同的方法/或其他任务来实现这一点,请告诉我。
发布于 2019-02-07 04:51:42
第(1)步-创建变量
您必须创建两个int类型的变量
@[User::RowCount]类型字符串@[User::Counter]类型@[User::strQuery] >>>>类型int >>将以下表达式赋给@[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]变量中(有关详细信息,请使用)。
第(3)步- For循环容器
现在,添加一个包含以下表达式的For Loop Container:
@[User::Counter] = 0@[User::Counter] < @[User::RowCount]@[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]作为源。
参考文献
https://stackoverflow.com/questions/54521074
复制相似问题