No SQL Server 2005 e além, você pode parametrizar o comando top.
O código abaixo é de MSDN
USE AdventureWorks;
GO
DECLARE @p AS int;
SELECT @p=10
SELECT TOP(@p)*
FROM HumanResources.Employee;
GO
Em versões anteriores do SQL Server, você precisará usar rowcount ou sql dinâmico.