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

T-SQL中 ,Top n中 的 n 能不能用参数
请问    
declare   @TopN   int
select   @TopN   =   5
select   top   @TopN   *   from   table1
这样写报错   应该怎么写

------解决方案--------------------
declare @TopN int, @sql varchar(8000)
select @TopN = 5

set @sql = 'select top ' + cast(@TopN as varchar(10)) + ' * from table1 '

exec (@sql)

------解决方案--------------------
--SQL 2005可以直接用

select top (@n) * from 表名

------解决方案--------------------
declare @TopN int
select @TopN = 5
exec ( 'select top ' + @TopN + ' * from table1 ')
go


declare @TopN int
select @TopN = 5
--测试
exec ( 'select top ' + @TopN + ' * from sysobjects ')
go
------解决方案--------------------
declare @TopN int
select @TopN = 5
Exec ( 'select top '+cast(@TopN as varchar)+ ' * from table1 ')