Mssql Offset-Fetch Kullanımı ve Pagination
Merhabalar,
Bu yazımda sizlere SQL de verileri sayfalamalı olarak çekmeyi(paging) ve SQL Server 2012 ile gelen 2 yeni özelliği Offset ve Fetch kullanımlarından bahsedeceğim.
Örnek veritabanı olarak Northwind kullanacağız, internette kolaylıkla bulup kendi bilgisayarınıza kurabilirsiniz.
Aşağıda Customer tablosunun verilerini görmektesiniz.
SELECT * FROM Customer
Sql de sayfalama işlemleri için Offset ve Fetch keyword lerini birlikte kullanırız ancak Offset deyimi tek başına da kullanılabilir. Aşağıdaki gibi kullanılırsa ilk 2 kayıt hariç tüm kayıtlar gelecektir. Ayrıca Offset kullanımı için ORDER BY kullanımı zorunludur.
SELECT * FROM Customers ORDER BY CustomerId OFFSET 2 ROWS;
Aşağıdaki gibi Offset ve Fetch deyimleri birlikte kullanılırsa yalnızca ilk 2 kayıttan sonraki 2 kayıt alınmış olur.
SELECT * FROM Customers ORDER BY CustomerId OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY;
Bu işlemi parametrik yaparsak @PageNumber ve @RowNumber parametreleriyle n. sayfadan n tane kayıt alınmış olur.
DECLARE @PageNumber AS INT, @RowNumber AS INT
SET @PageNumber = 1
SET @RowNumber = 5
SELECT *
FROM Customers
ORDER BY CustomerId
OFFSET ((@PageNumber - 1) * @RowNumber) ROWS
FETCH NEXT @RowNumber ROWS ONLY;
Kodlamaya devam!