یکی از دستورات پرکاربرد SQL که برای انتخاب بازه خاصی از نتایج مورد استفاده قرار میگیرد، عبارتهای Fetch و Next هستن.
Offset: The OFFSET argument is used to identify the starting point to return rows from a result set .
Fetch: The FETCH argument is used to return a set of number of rows. FETCH can’t be used itself, it is used in conjuction with OFFSET.
مثال زیر فیلدهای نال یک نتیجه را به ترتیب به مقادیر 1 تا n پر میکند:
DECLARE @i int=0; DECLARE @count int=0; DECLARE @borhanID int=3703; DECLARE @detailID int; SELECT @count = COUNT(*) FROM BorhanDetails WHERE BorhanDetails.BorhanHeaderID = @borhanID AND BorhanDetails.RowNo IS NULL WHILE @i <= @count BEGIN SET @i = @i + 1; SELECT @detailID = ID FROM BorhanDetails WHERE BorhanHeaderID = @borhanID AND RowNo IS NULL ORDER BY ID OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY; IF (@detailID>0) BEGIN UPDATE BorhanDetails SET RowNo = @i WHERE BorhanHeaderID = @borhanID AND ID = @detailID END END
! توجه داشته باشید در دیتاهای بزرگ استفاده از این روش سبب کندی میشود و به جای آن باید روش دیگری مانند روش زیر استفاده کرد:
select top NTake ... from ... order by ... where orderedByValue > lastRetrievedValue
روشی دیگر: لینک