C# SQL Top als parameter

Ik probeer de waarde van TOP in mijn sql-statement te parametriseren.

SELECT TOP @topparam * from table1
command.Parameters.Add("@topparam",SqlDbType.VarChar, 10).Value = somevalue.ToString();

Dit lijkt niet te werken. Heeft iemand suggesties?
Voor alle duidelijkheid: ik wil geen opgeslagen procedures gebruiken.


Antwoord 1, autoriteit 100%

In SQL Server 2005 en hoger, u kunt dit doen:

SELECT TOP (@topparam) * from table1

Antwoord 2, autoriteit 12%

Je moet minimaal SQL Server 2005 hebben. Deze code werkt prima in bijvoorbeeld 2005/8 …

DECLARE @iNum INT
SET @iNum = 10
SELECT TOP (@iNum) TableColumnID
FROM TableName

Als je SQL Server 2000 hebt, probeer dit dan eens …

CREATE PROCEDURE TopNRecords
@intTop INTEGER
AS
SET ROWCOUNT @intTop
SELECT * FROM SomeTable
SET ROWCOUNT 0
GO

Antwoord 3

Je zou een inline-query kunnen schrijven:

EXEC ‘SELECT TOP ‘ + @topparam + ‘ * FROM … ‘

Ontdek het als een int en dat voorkomt een SQL-injectie-aanval.

Other episodes