日期:2014-05-18  浏览次数:20614 次

一条让我崩溃的SQL语句
exec sp_executesql N'SELECT DISTINCT TOP @nrows name FROM test WHERE name like @term', N'@nrows int,@term nvarchar(2)', @nrows=10,@term = N'n%'

第 1 行: '@nrows' 附近有语法错误。

应该怎么改啊

------解决方案--------------------
[color=#FF0000][/color]str(@nrows ) top后面只能跟常数!
------解决方案--------------------
嗯,是在回避问题...
使用 sp_executesql 时SQL Server会对语句进行编译,对于你给出的语句,在编译时就已经报错.
因为编译时 @nrows 还没有被替换成数字10,这里他是一个字符串