继续上午的结帖问题:“sql2000查询分析器里运行此条语句出错,到底是哪错的泥? ”

中骑士 2012-08-24 04:23:50
上午问这个问题已经结帖给分,我以为得到了正确答案,但是回到我sql server 2000上怎么还会出错呢?
create procedure proc_GetListByPageIndex
(
@pageIndex int=1,
@pageSize int=5
)
as
select top (@pageSize) * from employees where employeeid not in
(
select top ((@pageSize)*(@pageIndex-1)) employeeid from employees order by employeeid
)order by employeeid

查询分析器里提示:
服务器: 消息 170,级别 15,状态 1,过程 proc_GetListByPageIndex,行 7
第 7 行: '(' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 proc_GetListByPageIndex,行 9
第 9 行: '(' 附近有语法错误。

我结帖结早了,呵呵,重新发一下,再问!
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
筱筱澄 2012-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SQL code
create procedure proc_GetListByPageIndex
(
@pageIndex int=1,
@pageSize int=5
)
as
EXEC ('select top '+@pageSize+' * from employees where employeeid not in
(
select top '……
[/Quote]
抱歉这个写错了




create procedure proc_GetListByPageIndex
(
@pageIndex int=1,
@pageSize int=5
)
AS

DECLARE @sql VARCHAR(8000)
SELECT @sql ='select top '+rtrim(@pageSize)+' * from employees where employeeid not in
(select top '+rtrim(@pageSize*(@pageIndex-1))+' employeeid from employees order by employeeid)
order by employeeid
'
EXEC (@sql)
answered 2012-08-24
  • 打赏
  • 举报
回复
declare @num int
set @num =10
DECLARE @sqlstr NVARCHAR(200)
SELECT @sqlstr = 'select top ('+CAST(@num AS VARCHAR(10)) + ') id from test '
EXEC(@sqlstr)
筱筱澄 2012-08-24
  • 打赏
  • 举报
回复
create procedure proc_GetListByPageIndex
(
@pageIndex int=1,
@pageSize int=5
)
as
EXEC ('select top '+@pageSize+' * from employees where employeeid not in
(
select top '+@pageSize+'*('+@pageIndex+'-1)+employeeid from employees order by employeeid)order by employeeid'
)


2000 不支持top 连变量的写法

要写成动态的

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧