高手请进,求一个MSSQL2000存储过程

ldg9tpl 2009-03-05 02:00:06
MSSQL2000里的存储过程,关于有TOP变量比较麻烦
一个TOP变量的情况,可以如下:
create proc name1
(@top[int])
as
set rowcount @top
select 字段1,字段2 from table1

现在我有两个TOP变量,该怎么写啊?
动态SQL语句如下:
select top 条数 字段1,字段2 from table1 where id not in(select top 条数 id from table1)
这是个按需取数据的分页SQL语句,有人说这不是最高效的分页方式,但我不统计总数(在插入数据时已经用事务作好总数记录了),再加上做了索引,应该效率不是很低吧,在网上看到人家写的什么高效分页存储过程太复杂了,我就想用我的这个动态SQL语句简单的改造为存储过程,不知道带两个TOP变量的怎么个写法。
另外,不知哪里有比较简单点的高效分页存储过程,朋友们帮推荐参考一下吧。

感谢各位朋友帮助!祝愿大家开心快乐,一切OK!
...全文
42 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-03-05
  • 打赏
  • 举报
回复
declare @sql varchar(200)
set @sql='select'+ cast(top as varchar)+ ' 字段1,字段2 from table1 '
exec @sql
ldg9tpl 2009-03-05
  • 打赏
  • 举报
回复
一楼大哥,谢谢你的帮助。
但是,你的回答只能在SQL2005里能用啊,2000是不行的
lateknow 2009-03-05
  • 打赏
  • 举报
回复
create proc name1
(@pageSize [int]) ,
(@currentPage [int])
as
set rowcount @top
select top @pageSize 字段1,字段2 from table1 where id not in
(select top (@currentPage-1)*@pageSize id from table1 order by id asc)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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