jueves, octubre 20, 2011

Procedimiento almacenado para realizar paginacion de una tabla en sql server

A continuacion el resultado de un par de horas de estar buscando como realizar paginacion para una tabla desde un procedimiento almacenado en SQL Server 2005, supongo que puede ser usado en la nueva version 2008.
Existen por ahi diversos ejemplos de como realizar esto, yo termine con esta sencilla version para mas adelante implementar un control ajax, que irá tomando los datos de 50 en 50 registros por vez.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        Victor Garcia
-- Create date: 2008/08/14
-- Description:    Procedimiento almacenado para paginacion de una tabla
-- Usage: usp_obtenpagina(0,20) 
-- Note: la primer pagina debe ser 0
-- =============================================
CREATE PROCEDURE usp_obtenpagina
    -- Add the parameters for the stored procedure here
    @Pagina  int = 0, 
    @Registros  int = 10
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    DECLARE @Inicio int;
    SET @Inicio=@Pagina*@Registros+1;
    SET @Registros = @Registros * (1+@Pagina);
  -- Insert statements for procedure here
    SELECT *
    FROM (SELECT ROW_NUMBER() OVER (ORDER BY MiTabla.MiId)
    AS Fila, *
    FROM MiTabla)
    AS Numeracion
    WHERE Fila between @Inicio and @Registros
END
GO

Listo!

No hay comentarios.: