SQL双top分页存储过程
来源:互联网 发布:windows pe 编辑:程序博客网 时间:2024/06/05 05:43
逻辑很简单,就是双top分页存储过程,复杂的是对特殊情况的处理,比如最后一页数据的处理,当最后一页数据数量没有分页数量大时的特殊处理,不然由于双top的特性,最后一页肯定是每页所分的数量。具体思路在文中已写的很明显。
create PROCEDURE [dbo].[Proc_GetData]@TableList VARCHAR(2000)='', --查询字段@TableName VARCHAR(200)='', --表名@SelectWhere VARCHAR(3000) = '' ,--查询条件@SelectOrder VARCHAR(200) = '' , --排序规则@intPageNo INT , --页号@intPageSize INT --每页显示数ASBEGIN SET NOCOUNT ON DECLARE @Pro_TableList VARCHAR(2000), @Pro_TableName VARCHAR(200), @Pro_SelectWhere VARCHAR(3000) = '' , @Pro_SelectOrder VARCHAR(200) = '' , @Pro_intPageNo INT , @Pro_intPageSize INT SET @Pro_TableList=@TableList SET @Pro_TableName=@TableName SET @Pro_SelectWhere=@SelectWhere SET @Pro_SelectOrder=@SelectOrder SET @Pro_intPageNo=@intPageNo SET @Pro_intPageSize=@intPageSize DECLARE @Temp NVARCHAR(4000) ,@TempTotal NVARCHAR(4000) ,@Total INT,@count INT SET @TempTotal='select @Total=count(1) FROM '+@TableName+' WHERE 1=1 '+@Pro_SelectWhere EXECUTE sp_executesql @TempTotal, --执行上面的sql语句 N'@Total int OUTPUT', --执行输出数据的sql语句,output出总记录数 @Total OUTPUT SET @count=@Pro_intPageSize*@intPageNo DECLARE @Rem INT=0 IF @count>@Total --页码*每页条数 > 符合条件的总数,即最后一页需要做特殊处理 BEGIN SET @Rem=@count-@Total --计算出余数,则该页查询的条数=每页条数-余数 END IF @Rem>@Pro_intPageSize BEGIN SET @Rem=@Pro_intPageSize SET @count=0 --如果余数>每页条数,说明页码超过最大页码的范围,查询结果应该是0条数据 END SET @Temp=' SELECT * FROM( SELECT TOP '+STR(@Pro_intPageSize-@Rem)+' * FROM ( SELECT TOP '+STR(@count)+' ROW_NUMBER() OVER(ORDER BY '+@Pro_SelectOrder+') new_id,'+STR(@Total)+' total,'+@Pro_TableList+' FROM '+@TableName+' WHERE 1=1 '+@Pro_SelectWhere+' ORDER BY '+@Pro_SelectOrder+' )a ORDER BY a.new_id desc ) b ORDER BY b.new_id' print @Temp EXECUTE sp_executesql @Temp SET NOCOUNT OFFEND
1 0
- SQL双top分页存储过程
- 存储过程 Top 分页
- sql 存储过程分页
- sql 存储过程分页
- sql分页存储过程
- sql分页存储过程
- sql 存储过程分页
- sql 存储过程分页
- SQL 存储过程---分页
- 分页存储过程--sql
- sql存储过程 分页
- sql 存储过程分页
- SQL 分页存储过程
- SQL分页存储过程
- sql分页存储过程
- SQL分页存储过程
- sql分页存储过程
- SQL ----存储过程分页
- jQuery对AJAX的封装——$.get(验证用户名是否存在)
- kindeditor使用方法
- 数据结构-链表
- OpenCV统计时间
- hello
- SQL双top分页存储过程
- Minimum Size Subarray Sum
- Spring 整合 Redis
- 195. Tenth Line
- /proc/interrupts 和 /proc/stat 查看中断的情况
- 润乾集算报表绘制企业仪表盘
- iOS学习笔记18-CoreData你懂的
- c++中string所占字节问题
- jQuery对AJAX操作的封装——$.post