我有900条记录的表。我想在一个时间得到10条记录,并将其分配给变量。当我运行在SSIS每个循环任务,它将循环另外10条记录,并覆盖变量下一次。任何帮助将得到高度赞赏。
我的表像这样e.g
EMPID
0001
00045
00067
00556
00078
00345
00002
00004
00005
00006
00007
00008
这是想要我试图执行SQL任务拉900个记录变量,连接执行SQL任务,对于每个循环,内部每个回路有数据流任务,源代码中有SQL查询,目的地是表。
select * from Dbo.JPKGD0__STP
where EMPID in ?
但是这将传递1
循环每个EMPID,所以我想通过每次10个empids。
请让我知道,如果我需要使用不同的方法/或其他任务,以实现这一目标。
你必须创建类型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]
源。