Al fine di gestire nel modo migliore grandi quantità di dati, sopratutto nelle pagine web, è necessario suddividere queste informazioni in più pagine in modo da rendere la navigazione veloce e chiara. Con sql server 2005 è possibile gestire la paginazione dei risultati direttamente dal transact-sql. Qui sotto viene riportato un piccola stored_procedure di esempio che mostra come sia realizzabile la paginazione dei dati. L'esempio è applicabile a partire dalla versione di sql server 2005, nella versione 2000 l'esempio riportato non funziona.
CREATE PROCEDURE [dbo].[usp_getProducts](@PageNumber int, @PageSize int, @filter int)
as
---- Numero di pagina
--DECLARE @PageNumber int;
---- Dimensione di pagina
--DECLARE @PageSize int;
--SET @PageNumber = 1;
--SET @PageSize = 10;
WITH PageRows(RowNumber, campo1, campo2, ecc)
AS (
SELECT TOP(@PageNumber * @PageSize) RowNumber = ROW_NUMBER() OVER (order by campo1),
campo1, campo2
FROM tabella
where categoria = @filter
order by campo1
)
SELECT *
FROM PageRows
WHERE RowNumber > ((@PageNumber - 1) * @PageSize)






