Sql server row_number between

Hola!
Estoy haciendo un procedimiento de paginación en sql server.
El problema que tengo es que al intentar meter la select en una variable me da error en los números del between. ¿Me podría ayudar?
Este es mi código:

CREATE PROCEDURE PaginaX
@tamPag integer,
@numPag integer,
@campoOrdenacion varchar(20)
AS
 declare @estado varchar(50);
 declare @consulta varchar(500);
 declare @num1 varchar;
 set @num1 = convert(varchar, @tamPag * @numPag + 1);
 declare @num2 varchar;
 set @num2 = convert(varchar, @tamPag * (@numPag + 1));
 set @consulta = 'SELECT *
 FROM
 (
 SELECT *,
 ROW_NUMBER() OVER (ORDER BY '+@campoOrdenacion+' desc) AS numlinea
 FROM CATALOGO
 ) AS miunidad;
 WHERE numlinea BETWEEN '+@num1+' AND '+@num2;
 exec @consulta;
GO
exec PaginaX 10, 1, 'num';

El error que me dice es este:

Mens 203, Nivel 16, Estado 2, Procedimiento PaginaX, Línea 36
El nombre 'SELECT *
FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY num desc) AS numlinea
FROM CATALOGO
) AS miunidad;
WHERE numlinea BETWEEN 1 AND 2' no es un identificador válido.

Gracias, un saludo.

Espero respuestas.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.