本文介紹了一次循環10條記錄并將其賦值給變量的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個包含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。
如果我需要使用不同的方法/或其他任務來實現這一點,請告訴我。
推薦答案
步驟(1)-創建變量
您必須創建兩個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)步-獲取行數
首先,使用以下命令添加一個Execute SQL Task
:
SELECT Count(*) FROM Dbo.JPKGD0__STP;
并將結果存儲在@[User::RowCount]
變量中(check this link了解詳細信息)。
第(3)步-For循環容器
現在,添加一個For Loop Container
,表達式如下:
InitExpression:@[User::Counter] = 0
EvalExpression:@[User::Counter] < @[User::RowCount]
AssignExpression:@[User::Counter] = @[User::Counter] + 10
在For loop container
內,添加一個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)
這篇關于一次循環10條記錄并將其賦值給變量的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,