SQL 根据分类表实现的分页存储过程
2010-09-14 09:32
549 查看
代码
--要分页的原始数据 CREATE TABLE tb( ID int PRIMARY KEY, --记录编号 grade varchar(10), --类别名称 uptime datetime) --更新时间 INSERT tb SELECT 1 ,'a','2004-12-11' UNION ALL SELECT 2 ,'b','2004-12-11' UNION ALL SELECT 3 ,'c','2004-12-11' UNION ALL SELECT 4 ,'a','2004-12-12' UNION ALL SELECT 5 ,'c','2004-12-13' UNION ALL SELECT 6 ,'c','2004-12-13' UNION ALL SELECT 7 ,'a','2004-12-14' UNION ALL SELECT 8 ,'a','2004-12-15' UNION ALL SELECT 9 ,'b','2004-12-16' UNION ALL SELECT 10,'b','2004-12-17' UNION ALL SELECT 11,'a','2004-12-17' --分页定义表 CREATE TABLE tb_Page( grade varchar(10) PRIMARY KEY, --类别名称,与tb表的grade关联 Records int, --每页显示的记录数 Orders int) --在页中的显示顺序 INSERT tb_Page SELECT 'c',2,1 UNION ALL SELECT 'b',1,2 UNION ALL SELECT 'a',2,3 GO --实现分页处理的存储过程 CREATE PROC p_PageView @PageCurrent int=1 --要显示的当前页码 AS SET NOCOUNT ON --得到每页的记录数 DECLARE @PageSize int SELECT @PageSize=SUM(Records) FROM tb_Page IF ISNULL(@PageSize,0)<0 RETURN --分页显示处理 SET @PageCurrent=@PageCurrent*@PageSize SET ROWCOUNT @PageCurrent SELECT SID=IDENTITY(int,1,1),ID INTO # FROM( SELECT TOP 100 PERCENT a.ID FROM tb a LEFT JOIN tb_Page b ON a.grade=b.grade ORDER BY CASE WHEN b.grade IS NULL THEN 1 ELSE 0 END,--分类没有定义的显示在最后 ((SELECT COUNT(*) FROM tb WHERE grade=a.grade AND (uptime>a.uptime OR uptime=a.uptime AND id>=a.id))-1) /b.Records, b.Orders,a.ID DESC)a IF @PageCurrent>@PageSize BEGIN SET @PageCurrent=@PageCurrent-@PageSize SET ROWCOUNT @PageCurrent DELETE FROM # END SELECT a.* FROM tb a,# b WHERE a.ID=b.ID ORDER BY b.SID GO --调用 EXEC p_PageView 2 /*--结果 ID grade uptime ----------- ---------- ------------------------------------------------------ 3 c 2004-12-11 00:00:00.000 9 b 2004-12-16 00:00:00.000 7 a 2004-12-14 00:00:00.000 4 a 2004-12-12 00:00:00.000 2 b 2004-12-11 00:00:00.000 --*/
相关文章推荐
- 根据分类表实现的分页存储过程.sql
- 一个通用的分页存储过程实现-SqlServer(附上sql源码,一键执行即刻搭建运行环境)
- 字符串缓存实现的通用分页存储过程.sql
- Sql分页存储过程以及实现
- TOP n 实现的通用分页存储过程.sql
- 使用系统存储过程实现的通用分页存储过程.sql
- 实现SQL分页的存储过程代码
- SQL:利用存储过程实现分页
- 利用SQL未公开的存储过程实现分页
- SQL分页存储过程的实现
- SQL存储过程实现分页
- 查询分类并实现分类统计SQL存储过程
- 一个利用sql 语句来实现分页的存储过程
- 利用SQL未公开的存储过程实现分页(更加好用的一个!)
- SQL 字符串缓存实现的通用分页存储过程
- SQL存储过程分页(通用的拼接SQL语句思路实现)
- 7.2.1 TOP n 实现的通用分页存储过程.sql
- 利用SQL未公开的存储过程实现分页
- SQL分页参数传值 在存储过程中使用 动态SQL实现
- SQL 临时表缓存实现的通用分页存储过程