数据库存储过程实现高效分页
来源:互联网 发布:node.js express 编辑:程序博客网 时间:2024/06/05 15:04
Create PROCEDURE Paging
@TableName Nvarchar(4000), --要显示的表、视图(大视图最好不要用)、或是SQL语句
@FieldName nvarchar(4000) = '*', --要显示的字段列表,所有字段是* 大视图最好不要用*
@PageSize int, --每页显示的记录个数(每页条数小于1则修正成10)
@PageIndex int=1, --要显示那一页的记录(当前页小于1或自动修正为1)
@Where nvarchar(2000) = '1=1', --查询条件
@RecordCount int =0 output --返回查询到的记录数
Declare @SelectSql nvarchar(4000) --声明一个查询语句
if @PageSize < 1 set @PageSize = 10--如果小每页大小小于1则设置为10
set @SelectSql = ' select @RecordCount = count(0) from ' + @TableName + ' where ' + @Where
exec sp_executesql @SelectSql ,N'@RecordCount int out ',@RecordCount out
--计算@PageCount的值
if @RecordCount <= @PageSize
set @PageCount = 1
else if @RecordCount % @PageSize = 0
set @PageCount = (@RecordCount / @PageSize )
else
set @PageCount = (@RecordCount / @PageSize ) + 1
--检查@PageIndex的值
if @PageIndex> @PageCount
set @PageIndex= @PageCount
if @PageIndex < 1
set @PageIndex = 1
'select row_number() over ( order by ' + @OrderBy + ' DESC) RowID ,' + @FieldName +
' from ' + @TableName + ' where ' + @Where +
') a where a.RowID between ' + cast((@PageIndex -1) * @pageSize+1 as varchar(128)) +
select @PageCount,@RecordCount
END
SET NOCOUNT OFF
@TableName Nvarchar(4000), --要显示的表、视图(大视图最好不要用)、或是SQL语句
@FieldName nvarchar(4000) = '*', --要显示的字段列表,所有字段是* 大视图最好不要用*
@PageSize int, --每页显示的记录个数(每页条数小于1则修正成10)
@PageIndex int=1, --要显示那一页的记录(当前页小于1或自动修正为1)
@Where nvarchar(2000) = '1=1', --查询条件
@OrderBy nvarchar(2000), --排序字段,最好是索引字段
@OrderByType bit=1,--排序方式默认1按DESC排序0按ASC排序
@RecordCount int =0 output --返回查询到的记录数
AS
SET NOCOUNT ON
Declare @SelectSql nvarchar(4000) --声明一个查询语句
if @PageSize < 1 set @PageSize = 10--如果小每页大小小于1则设置为10
set @SelectSql = ' select @RecordCount = count(0) from ' + @TableName + ' where ' + @Where
exec sp_executesql @SelectSql ,N'@RecordCount int out ',@RecordCount out
--计算@PageCount的值
if @RecordCount <= @PageSize
set @PageCount = 1
else if @RecordCount % @PageSize = 0
set @PageCount = (@RecordCount / @PageSize )
else
set @PageCount = (@RecordCount / @PageSize ) + 1
--检查@PageIndex的值
if @PageIndex> @PageCount
set @PageIndex= @PageCount
if @PageIndex < 1
set @PageIndex = 1
--set @SelectSql = 'select * '+@FieldName +' from (' +
if @orderByType=1
'select row_number() over ( order by ' + @OrderBy + ' DESC) RowID ,' + @FieldName +
' from ' + @TableName + ' where ' + @Where +
') a where a.RowID between ' + cast((@PageIndex -1) * @pageSize+1 as varchar(128)) +
' and ' + cast((@PageIndex * @pageSize) as varchar(128))
else
set @SelectSql = 'select * from (' +
'select row_number() over ( order by ' + @OrderBy + ' ASC) RowID ,' + @FieldName +
' from ' + @TableName + ' where ' + @Where +
') a where a.RowID between ' + cast((@PageIndex -1) * @pageSize+1 as varchar(128)) +
' and ' + cast((@PageIndex * @pageSize) as varchar(128))
select @PageCount,@RecordCount
END
SET NOCOUNT OFF
高效分页
0 0
- 数据库存储过程实现高效分页
- 通用存储过程代码实现高效分页
- 通用数据库存储过程代码--高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 通用高效分页存储过程
- 通用高效分页存储过程
- 通用高效分页存储过程
- 通用高效分页存储过程
- 高效分页存储过程参考
- error: Error retrieving parent for item: No resource found that matches the given name 'android:Them
- ASP.NET MVC 视图(二)
- OC内存管理
- POJ 2366 Sacrament of the sum(二分查找)
- 果园里的快乐时光
- 数据库存储过程实现高效分页
- PhoneGap 之环境搭建
- 重天乾 4-2
- Cocos2d-x 粒子编辑器 Particle Studio 争做 Windows Particle Designer 源码
- 色可冽(seaclean)重金属捕捉剂MTRAPER--QY-ZP01产品
- java笔记(四)
- JavaScript闭包初探
- javascript 闭包 导致 的 重复 绑定 事件
- 移植——错误总结