在这种情况下如何使用SQL参数

时间:2011-07-08 14:04:30

标签: .net sql sql-server vb.net

我的查询是这样的: "SELECT TOP 5 * FROM [TableName] ORDER By NEWID()"

但我想使用SQL参数,所以它可能是这样的: "SELECT TOP @ParameterName * FROM [TableName] ORDER By NEWID()"

正常的方式不起作用:

Ct.Command.CommandText = "SELECT TOP @ParameterName * FROM [TableName] ORDER By NEWID()"
Ct.Command.Parameters.AddWithValue("@ParameterName", SomeValue)

如何在这种情况下添加参数?

4 个答案:

答案 0 :(得分:12)

只需在参数周围加上括号即可。自SQL Server 2005以来支持

Ct.Command.CommandText = "SELECT TOP (@ParameterName) * FROM [TableName] ORDER By NEWID()"

注意:TOP without parenthesis用于向后兼容;应始终使用它们

  

为了向后兼容,支持SELECT语句中没有括号的TOP表达式,但我们不建议这样做。

答案 1 :(得分:0)

是否有必要以这种方式使用参数?也许你会做这样的事情:

Ct.Command.CommandText = string.Format("SELECT TOP {0} * FROM [TableName] ORDER By NEWID()", 5);

答案 2 :(得分:0)

使用动态T-SQL

EXEC('SELECT TOP ' + CAST(@ParameterName AS VARCHAR(5)) + ' * FROM [TableName] ORDER By NEWID()')

答案 3 :(得分:-1)

您必须在此处创建动态SQL。

Ct.Command.CommandText = 
    String.Format("SELECT TOP {0} * FROM [TableName] ORDER By NEWID()",SomeValue)