Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/12/2007, 05:12
Avatar de PosProdukcion
PosProdukcion
 
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Re: Paginar resultados

Cita:
Iniciado por royrojas Ver Mensaje
y

CREATE PROCEDURE [rcListar_Noticia_Pag](
@num_registros smallint = 100,
@num_pagina smallint = 1)
AS
SET NOCOUNT ON
BEGIN

Declare @NoRegs as smallint
SET @NoRegs = @num_registros * (@num_pagina - 1)

SELECT TOP(@num_registros)

[id_noticia]
,[nom_noticia]
--,[des_noticia]
,[fec_noticia]
,[fec_vencimiento]
,[ind_estado]
,[num_vistas]
FROM [vrcNoticia]
WHERE [id_noticia] not in(
SELECT TOP(@NoRegs) [id_noticia]
FROM vrcNoticia
ORDER BY [id_noticia] DESC)
ORDER BY [id_noticia] DESC

/* Retorna el numero total de paginas */
DECLARE @CantidadRegistros as smallint
SELECT @CantidadRegistros = COUNT(*) FROM [vrcNoticia]
SELECT dbo.CantidadPaginas(@CantidadRegistros,@num_regist ros) TotalPaginas

END
Hola de nuevo, retomando este asunto (casi 2 meses después!!!), en la solución que me comentas haces dos veces TOP(@variable), esto da error (estoy en SQL Server 2000) y según he visto en varios sitios (p.ej aquí), no hay muchas más alternativas que usar sentencias dinámicas, como meter la select en un varchar y usar Execute, ya que al usar dos TOP (valores_distintos) tampoco me sirve la solución de SET ROWCOUNT.

¿Alguna solución mejor que las sentencias dinámicas para paginar resultados en servidor?? Creo que al final optaré por estas, pero bueno, pregunto por si proponéis algo más

Gracias