sql server2000中top后面可以跟变量吗?是不是只有sql server2005中才支持啊?
create procedure dbo.sp_gb_select_for_pages
@startpage int = 1, -----当前页码
@pagesize int = 10, -----页长
@pagecount int output -----总页数
as
set nocount on
if(@startpage > 0)
set @startpage = (@startpage-1)* @pagesize select @pagecount = count(*) from bookinfo
select top '+@pagesize+' *
from bookinfo
where id not in
(
select top (@startpage) id
from bookinfo
order by id desc
)
order by id desc
return结果显示:
服务器: 消息 170,级别 15,状态 1,过程 sp_gb_select_for_pages,行 11
第 11 行: '+@pagesize+' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 sp_gb_select_for_pages,行 15
第 15 行: '(' 附近有语法错误。请问,如果sql server2000中不支持,应该怎么处理?
create procedure dbo.sp_gb_select_for_pages
@startpage int = 1, -----当前页码
@pagesize int = 10, -----页长
@pagecount int output -----总页数
as
set nocount on
if(@startpage > 0)
set @startpage = (@startpage-1)* @pagesize select @pagecount = count(*) from bookinfo
select top '+@pagesize+' *
from bookinfo
where id not in
(
select top (@startpage) id
from bookinfo
order by id desc
)
order by id desc
return结果显示:
服务器: 消息 170,级别 15,状态 1,过程 sp_gb_select_for_pages,行 11
第 11 行: '+@pagesize+' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 sp_gb_select_for_pages,行 15
第 15 行: '(' 附近有语法错误。请问,如果sql server2000中不支持,应该怎么处理?
select * from .....
set rowcount 0
但很遗憾,你这句里面还有个子查询,所以不能这么干,只能动态exec了.exec('SELECT TOP ' + @pagesize + ' FROM tb WHERE id not in(select top ' + @startpage + ' id from ....) order by id desc ')sql2005支持 top 后接变量.