Cita:
Iniciado por royrojas 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