本文介紹了一次循環(huán)10條記錄并將其賦值給變量的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個包含900條記錄的表。
我想一次獲得10條記錄,并將其分配給變量。
下次我在SSIS中運行For Each循環(huán)任務時,
它將循環(huán)另外10條記錄并覆蓋變量。
我們將非常感謝您的幫助。
我有這樣的桌子,例如
EMPID
0001
00045
00067
00556
00078
00345
00002
00004
00005
00006
00007
00008
這是要我試過執(zhí)行SQL任務把900條記錄拉到變量,把執(zhí)行SQL任務連接到For Each循環(huán),里面For Each循環(huán)有數(shù)據(jù)流任務,源有SQL查詢,目標是表。
select * from Dbo.JPKGD0__STP
where EMPID in ?
但這將在1
循環(huán)中傳遞每個Empid,所以我希望每次傳遞10個Empids。
如果我需要使用不同的方法/或其他任務來實現(xiàn)這一點,請告訴我。
推薦答案
步驟(1)-創(chuàng)建變量
您必須創(chuàng)建兩個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)步-獲取行數(shù)
首先,使用以下命令添加一個Execute SQL Task
:
SELECT Count(*) FROM Dbo.JPKGD0__STP;
并將結(jié)果存儲在@[User::RowCount]
變量中(check this link了解詳細信息)。
第(3)步-For循環(huán)容器
現(xiàn)在,添加一個For Loop Container
,表達式如下:
InitExpression:@[User::Counter] = 0
EvalExpression:@[User::Counter] < @[User::RowCount]
AssignExpression:@[User::Counter] = @[User::Counter] + 10
在For loop container
內(nèi),添加一個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)
這篇關(guān)于一次循環(huán)10條記錄并將其賦值給變量的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,