set @sql=N'select top '+@rr+'  * from test'
exec sp_executesql @sql

解决方案 »

  1.   

    set @rr=1
    set @sql=N'select top '+@rr+'  * from test'
    exec sp_executesql @sql
      

  2.   

    declare @sql nvarchar(100)
    declare @rr int
    set @rr=1
    set @sql=N'select top '+cast(@rr as nvarchar(10))+'  * from test'
    exec sp_executesql @sql
      

  3.   

    因为 select top 的格式不支持变量。
    declare @sql nvarchar(200)
    set @sql='declare @sql_1 nvarchar(200)
              set @sql_1 = ''select top '''
                          +'+cast(@rr as char(10))+'
                          + '''  * from test'' exec(@sql_1)'exec sp_executesql @sql,
    @parms=N'@rr int',
            @rr=1