SQL分页的应用
来源:互联网 发布:淘宝皮草店装修效果图 编辑:程序博客网 时间:2024/05/16 07:07
在使用列表页面往往会涉及到分页,然而现在以easyui的列表插件为主,easyui的列表都自带有分页,但是体现分页效果并不仅仅是分页插件,更多的在于分页时对数据的查找,数据库SQL分页在列表呈现中就体现出了其重要性,以前用过的分页存储过程有很多,都是涉及算法,自己在存储过程里面进行计算,用的最多的就是用ROW_NUMBER()进行数据分页处理,今天我并不是用ROW_NUMBER()来分页,利用OFFSET FETCH NEXT分页这是
SQL Server 2012新方法
对于测试表我这里就不展示了
code:
CREATE PROCEDURE [dbo].[PagingStorageQuery] @TableName NVARCHAR(100), --数据源对象[表名、视图名]<必填> @QueryTerm NVARCHAR(MAX), --查询条件 @PageIndex INT, --索引页<必填> @PageSize INT, --页面条数<必填> @SortField NVARCHAR(50), --排序字段<必填> @Sort INT, --排序方式[0.ASC<升序 默认> 1.DESC<降序>] @DisplayField NVARCHAR(MAX), --显示字段[默认*] @IsRowNumber INT=NULL, --是否开始RowNumber[默认不开启,0.不开启 1.开启] @RowCount INT=NULL OUTPUT --数据总数ASBEGIN SET NOCOUNT ON; DECLARE @QueryString NVARCHAR(MAX) --查询条件 DECLARE @StartRowNumber NVARCHAR(10) --开始查询条数 DECLARE @SortSql NVARCHAR(100) --排序Sql DECLARE @SqlString NVARCHAR(MAX) --执行SqlString DECLARE @SqlCount NVARCHAR(MAX) --执行SqlCount --初始化查询条件 SET @QueryString=' WHERE 1=1 ' --初始化开始查询条件 SET @StartRowNumber=((@PageIndex-1)*@PageSize) --判断是否存在排序 IF(ISNULL(@SortField,'')<>'') BEGIN IF(@Sort=1) SET @SortSql=' ORDER BY '+@SortField+' DESC' ELSE SET @SortSql=' ORDER BY '+@SortField+' ASC' END --判断查询条件是否存在 IF(ISNULL(@QueryTerm,'')<>'') SET @QueryString=@QueryString+' AND '+@QueryTerm --判断显示字段是否存在 IF(ISNULL(@DisplayField,'')='') SET @DisplayField='*' --判断数据源对象是否存在 IF(ISNULL(@TableName,'')<>'') BEGIN --总记录数 SET @SqlCount = 'SELECT @tempCount = COUNT(*) FROM ' + @TableName+@QueryString IF(@IsRowNumber=1) BEGIN SET @SqlString='SELECT ROW_NUMBER() OVER('+ISNULL(@SortSql,'')+') as RowNumber,* FROM ( SELECT '+@DisplayField+' FROM '+@TableName+@QueryString+ISNULL(@SortSql,'') +' OFFSET ' +CONVERT(NVARCHAR(10),@StartRowNumber)+' ROWS FETCH NEXT '+CONVERT(NVARCHAR(10),@PageSize)+' ROWS ONLY) AS A' END ELSE BEGIN SET @SqlString='SELECT '+@DisplayField+' FROM '+@TableName+@QueryString+ISNULL(@SortSql,'') +' OFFSET ' +CONVERT(NVARCHAR(10),@StartRowNumber)+' ROWS FETCH NEXT '+CONVERT(NVARCHAR(10),@PageSize)+' ROWS ONLY' END PRINT @SqlString PRINT @SqlCount EXEC(@SqlString) EXECUTE SP_EXECUTESQL @SqlCount,N'@tempCount BIGINT OUTPUT',@tempCount = @RowCount OUTPUT; ENDEND
注:上面标注的必填项不能为空,否则存储过程会报错,以上代码直接复制可用
0 0
- SQL分页的应用
- 分页类的应用
- 分页的sql代码
- oracle 分页的sql
- SQLServer的分页SQL
- 分页相关的SQL
- 基于SQL的分页
- SQL的分页查询
- sql的分页函数
- db2分页的sql
- Oracle的分页sql
- SQL简单的分页
- Sql的分页方式
- 分页的sql语句
- SQL分页存储过程及其应用
- IBatis的分页研究-----sql分页
- 分页技术--sql语句的分页
- 分页的存储过程应用
- 每日一得--spring事物service切面不使用事物注解
- Intent实现页间面跳转
- (原创)自定义view(view的绘制过程)、无限轮播并触碰停止轮播的viewpage、水平和垂直滚动的TextView、仿QQ滑动删除、下拉刷新上拉加载view、毛玻璃效果、低版本水波纹、圆环头像图
- WinDbg配置和使用基础
- iOS 3D Touch
- SQL分页的应用
- KMP_next数组_while详解_Java实现
- CentOS6.5升级内核
- xml之DOM方式解析,DOM4J工具解析原理
- 布隆过滤器(Bloom Filter)详解
- k短路 SPFA+A*算法 poj 2449
- LINUX系统,profile文件出错
- 分布式缓存系统Memcached简介与实践
- Struts2优点