我的查询是这样的:
"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)
如何在这种情况下添加参数?
答案 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)