在使用select top n from ***,的时候,有点疑问,当这个n是表达式或局部变量时,总是抱错,比如
-----------------------------------------------------------------------------------------
declare @i int
set @i = 0
select @i = count(*) from master..sysdatabases
set @i = @i - 9 + 1
print @i
select top @i * from master..sysdatabases order by dbid desc
-----------------------------------------------------------------------------------------
服务器: 消息 170,级别 15,状态 1,行 6
第 6 行: '@i' 附近有语法错误。
请教这个问题的解决方法
-----------------------------------------------------------------------------------------
declare @i int
set @i = 0
select @i = count(*) from master..sysdatabases
set @i = @i - 9 + 1
print @i
select top @i * from master..sysdatabases order by dbid desc
-----------------------------------------------------------------------------------------
服务器: 消息 170,级别 15,状态 1,行 6
第 6 行: '@i' 附近有语法错误。
请教这个问题的解决方法
set @i = 0
select @i = count(*) from master..sysdatabases
set @i = @i - 9 + 1
print @i
exec('select top '+@i+' * from master..sysdatabases order by dbid desc')
declare @s nvarchar(1000)
set @i = 0
select @s='select @i = count(*) from master..sysdatabases'
exec sp_executesql @s,N'@i int output',@i output
set @i = @i - 9 + 1
print @i
exec('select top '+@i+' * from master..sysdatabases order by dbid desc')
select top ((select count(*) from master..sysdatabases) - 9 + 1) *
from master..sysdatabases order by dbid desc
declare @i int
set @i = 0
select @i = count(*) from master..sysdatabases
set @i = @i - 9 + 1
print @i
select * from master..sysdatabases order by dbid desc
--需要使用动态SQL语句方式,编辑字符串连接为一整条SELECT,变量好像要单独分折后连接
exec('select top '+@i+' * from master..sysdatabases order by dbid desc')
崇拜邹建!小弟:frank ^-^