49 votes

C# SQL Top comme paramètre

Essayer de paramétrer la valeur de TOP dans ma déclaration SQL.

SELECT TOP @topparam * from table1

command.Parameters.Add("@topparam", SqlDbType.VarChar, 10).Value = somevalue.ToString();

Cela ne semble pas fonctionner. Quelqu'un a des suggestions?
Juste pour clarifier, je ne veux pas utiliser de procédures stockées.

76voto

Cade Roux Points 53870

Dans SQL Server 2005 et supérieur, vous pouvez faire ceci :

SELECT TOP (@topparam) * from table1

8voto

JP Alioto Points 33482

Vous devez avoir au moins SQL Server 2005. Ce code fonctionne bien en 2005/8 par exemple ...

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

Si vous avez SQL Server 2000, essayez ceci ...

CREATE PROCEDURE TopNRecords
@intTop INTEGER
AS
SET ROWCOUNT @intTop

SELECT * FROM SomeTable

SET ROWCOUNT 0
GO

0voto

Russell Points 6893

Vous pourriez écrire une requête en ligne:

EXEC 'SELECT TOP ' + @topparam + ' * FROM ... '

Parse it as an int and that will prevent a SQL injection attack.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X