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.