SQL Server 2011 Denali - Ad-Hoc Query Paging - Sayfalama
SQL Server 2011 Denali ile gelen yeni özelliklerden biri de sorgu sonuçlarında Paging ya da sayfalama yapabilme opsiyonudur. Denali’den önce de bazı yöntemler ile paging yapılabilmekteydi ama yeni gelen syntax ile bu işlemi yapabilmek artık çok daha kolay.
İlk olarak Denali’den önce bu işlemin nasıl yapıldığına bakalım.
Örneğin aşağıdaki sorgu Satış tablosundaki verilerin 100 ile 150 arasındaki kayıtlarını getirmekte. Yani her sayfada 50 kayıt bulunuyorsa 3.sayfayı getirmeye çalışıyoruz.
SELECT * FROM (
SELECT *
,ROW_NUMBER() OVER (ORDER BY soh.SalesOrderID) AS 'RowNumber'
FROM Sales.SalesOrderHeader soh
) Tbl1
WHERE RowNumber>100 and RowNumber<=150
Denali’de ise şu syntax ile sayfalama yapabilmekteyiz.
SELECT *
FROM Sales.SalesOrderHeader soh
ORDER BY soh.SalesOrderID ASC
OFFSET 100 ROWS
FETCH NEXT 50 ROWS ONLY;
Bir de bunu SP’ye dönüşterelim ve her sayfada kaç satır var, kaçıncı sayfayı istiyoruz parametrelerini göndererek sorguyu çekelim.
CREATE PROCEDURE dbo.spGetEmployees
(
@PageNumber int = 1,
@RowCountInPage int = 50
)
AS
BEGIN
SELECT *
FROM Sales.SalesOrderHeader soh
ORDER BY soh.SalesOrderID ASC
OFFSET (@PageNumber-1)*@RowCountInPage ROWS
FETCH NEXT @RowCountInPage ROWS ONLY;
END
SP’yi çağıralım. Her sayfada 50 kayıt var, 3. sayfayı almak istiyorum.
exec dbo.spGetEmployees 3,50