si en sql 200 este codigo da error, lo que se debe hacer es meter todo el codigo en un string y ejecutarlo. El problema es con el TOP, que antes no era tan flexible como lo es ahora en el 2005.
Ese mismo procedimiento, cuando lo tenia en sql 2000 lo usaba asi
Código:
CREATE PROCEDURE DN_LIB_TraerNoticiasPag(
@num_registros int = 100,
@num_pagina int = 1
)
as
set nocount on
begin
/*
Retorna los noticias registradas por la pagina indicada.
*/
Declare @SQLstr as varchar(8000)
Declare @NoRegs as int
SET @NoRegs = @num_registros * (@num_pagina - 1)
SET @SQLstr = 'SELECT TOP ' + CAST(@num_registros AS VARCHAR(5)) +
' N.cod_noticia CodigoNoticia, ' +
' N.nom_noticia NombreNoticia, ' +
' substring(N.des_noticia,1,400) DescripcionNoticia, ' +
' N.fec_ingreso FechaIngreso, ' +
' N.num_vistas NumeroVisitas ' +
'FROM DN_LIB_NOTICIAS N ' +
'WHERE cod_noticia not in( ' +
' SELECT TOP ' + CAST(@NoRegs AS VARCHAR(5)) + ' cod_noticia ' +
' FROM DN_LIB_NOTICIAS ' +
' ORDER BY cod_noticia DESC ' +
' ) ' +
'ORDER BY cod_noticia DESC '
EXEC(@SQLstr)
/* Retorna el numero total de paginas */
DECLARE @CantidadRegistros as smallint
SELECT @CantidadRegistros = COUNT(*) FROM [vrcNoticia]
SELECT dbo.CantidadPaginas(@CantidadRegistros,@num_regist ros) TotalPaginas
end
Entonces ahi te queda el mismo procedimiento en las dos versiones para sql 2005 o sql 2000.