我有900条记录的表格。 我想一次获取10条记录并将其分配给变量。 下次当我在SSIS中运行for each循环任务时, 它将循环另外10条记录并覆盖变量。 任何帮助将不胜感激。
我有这样的表,例如
EMPID
0001
00045
00067
00556
00078
00345
00002
00004
00005
00006
00007
00008
这是我要尝试执行sql任务以将900条记录拉到变量,将Execute sql任务连接到。对于每个循环,每个循环内部都有数据流任务,源有sql查询,目标是表。
select * from Dbo.JPKGD0__STP
where EMPID in ?
但这将在1
循环中传递每个empid,因此我想每次传递10个empid。
请告知我是否需要使用其他方法/或其他任务来实现这一目标。
答案 0 :(得分:0)
您必须创建两个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 "
首先使用以下命令添加Execute SQL Task
:
SELECT Count(*) FROM Dbo.JPKGD0__STP;
并将结果存储在@[User::RowCount]
变量(check this link中以获取更多信息)。
现在,添加带有以下表达式的For Loop Container
:
@[User::Counter] = 0
@[User::Counter] < @[User::RowCount]
@[User::Counter] = @[User::Counter] + 10
在For loop container
内,添加一个Data flow task
,其中包含OLE DB源和目标。在OLE DB源中,选择Access Mode
作为SQL Command from variable
,然后选择@[User::strQuery]
作为源。