В SQL Server 2005 и более поздних версиях вы можете параметризовать команду top.
Код ниже от MSDN
USE AdventureWorks;
GO
DECLARE @p AS int;
SELECT @p=10
SELECT TOP(@p)*
FROM HumanResources.Employee;
GO
В более ранних версиях SQL Server вам нужно будет использовать rowcount или динамический sql.