Que tal amigos lectores,

Desde la versión SQL Server 2005 se agregó la función ROW_NUMBER(), para obtener una paginación y así simplificarse cuando tenemos proyectos y queremos una paginación los mas rápido, confiable y seguro.

Veamos un ejemplo

Creamos un procedimiento almacenado.

CREATE PROCEDURE sp_getRegistrosClientes

(
@pageSize int , -- tamaño de registro de la página
@pageNum int -- número de página de la paginación
)

AS

BEGIN

SELECT
codigo
, nombres
, edad
, pais
FROM

(
SELECT
,codigo
, nombres
, edad
, pais

,ROW_NUMBER() OVER (ORDER BY codigo DESC) ROWNUMBER -- nos enumera y lo ordenas por el codigo para el paginado

FROM Clientes

) AS TableClientes

WHERE
ROWNUMBER BETWEEN (@pageSize * @pageNum + 1 )
AND (@pageSize * (@pageNum + 1) ) -- Tenemos que calcular para que nos muestre el numero de pagina y el tamaño de registros a mostrar

END

Ahora veamos si queremos que nos devuelva los registro de 10 en 10 y que muestre la página número 7, con simplemente llamando al procedimiento almacenado podemos hacerlos y agregando los parámetros.

Veamos un ejemplo

-- tener en cuenta que la primera pagina empieza x 0
DECLARE @registroPagina int -- numero de registro a mostrar

DECLARE @numPagina int -- el numero de pagina que queremos mostrar

SET @registroPagina = 10 -- indicamos que la paginación sera de 10 en 10 los registro

SET @numPagina = 7 -- indicamos que me muestre la página número 6

-- llamamos al Store Procedure

execute sp_getRegistrosClientes @registroPagina, @numPagina

Bueno vimos que es muy fácil hacer una paginación gracias a la función ROW_NUMER en SQL Server.

nota