Paginar datos en SQL Server

Aquí explicamos cómo hacer una lista de datos con paginación, de forma manual en SQL Server.

Una de las cosas que podemos hacer cuando ya manejamos mucha información en nuestro sitio web, es paginar los datos para que no se hagan listas interminables de datos en una pantalla. Esta forma que se explica aquí es mí preferida, ya que solicita nada más el extracto de información que va a desplegar, de esta forma se ahorran recursos.

Aquí solo explicaremos la parte de SQL Server, en otro artículo lo integraremos a un ejemplo con ASP.NET.

Para realizar esto vamos a necesitar una función y un procedimiento almacenado.

La función CantidadPaginas recibe dos valores, CantidadRegistros y RegistrosPagina. CantidadRegistros es la cantidad de registros que tiene la tabla, o el total de registros de información sin paginar. RegistrosPagina es la cantidad de registros por página. Como resultado esta función retorna la cantidad de páginas que supondría esta consulta. Excelente para hacer un DataPager (ejemplo: pags. 1.2.3.4.5)

El procedimiento almacenado dn_sp_ListaRecursosXPagina recibe dos valores, Registros y Pagina. Registros es la cantidad de registros por página, valor que después se le pasa a la función anterior. El valor Pagina es la página que se quiere solicitar, por ejemplo el bloque de recursos de la página 2.


En el procedimiento almacenado primero se solicitan los datos que se van a filtrar, la consulta a la tabla con los datos correspondientes, y se le agrega la columna RowNumber. RowNumber es la clave en esta operación. Row Number se debe ordenar por el valor que nosotros queremos que sea el indicador al filtro de páginas, como se vayan a ordenar los datos en la página. Puede ser un entero, fecha o el que queramos. Estos datos quedan almacenados en una tabla temporal o virtual

Una vez que tengamos los datos ordenados y con el número de línea, se filtra el bloque que queremos consultar. Es donde se puede ver el código similar a:

SELECT * FROM dn_recurso_temp
WHERE RowNumber between RegistroInicio and RegistroFin
ORDER BY codigo_recurso DESC

Luego se consulta la cantidad de páginas para retornar también este valor para poder hacer la paginación respectiva.

 

One comment

  1. Anonimo - November 30, 2011 12:00 am

    Excelente

    Reply

Have your say