C#SQL顶部作为参数

尝试在我的sql语句中参数化TOP的值。

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

这似乎并不奏效。 任何人有任何build议?
只是为了澄清,我不想使用存储过程。

在SQL Server 2005及更高版本中 ,您可以这样做:

 SELECT TOP (@topparam) * from table1 

你需要至less有SQL Server 2005.这个代码工作正常2005/8例如…

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

如果你有SQL Server 2000,试试这个…

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

你可以写一个内联查询:

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

parsing为int,这将防止SQL注入攻击。