create proc spTest @Top int
as
declare @sql varchar(8000)
set @sql = 'select top ' + rtrim(@Top) + ' * from table'
exec(@sql)
GO

解决方案 »

  1.   

    top 关键字可以当成参数传递的写成动态SQL 语句用sp_executesql  执行就可以了declare @top int
    declare @str varchar(1000)
    select @top=5
    select @str='select top'+ CONVERT(varchar(20),@top)+'* from tabname'
    exec sp_executesql @str
      

  2.   

    在系统存储过程sp_executesql中可以直接使用
    只是要注意,在申明字符变量时,要加N
    例如:declare @str Nvarchar(1000)
    而非declare @str varchar(1000)