>SQL Server 2011 “Denali” – Ad-Hoc Query Paging–Sayfalama

>SQL Server 11 “Denali” ile gelen yeni özelliklerden biride Query’lerde Paging ya da sayfalama yapabilme opsiyonu. Denali’den öncede bazı yöntemlerle paging yapılabilmekteydi ama yeni gelen syntax’la 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 paging 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ç row var, kaçıncı sayfayı istiyoruz parametrelerini göndererek sorguyu çekelim.

CREATE PROCEDURE dbo.spGetSales
(
@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.spGetSales 3,50

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s