یکی از دستورات پرکاربرد 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
روشی دیگر: لینک