高效储存过程分页
来源:互联网 发布:100以内的质数java 编辑:程序博客网 时间:2024/05/16 12:14
CREATE PROCEDURE [dbo].[Common] @strTable varchar(30),--表名@strFields varchar(300),--检索的字段@strSortField varchar(30),--排序的字段@PageIndex int =1, --页码@PgSize int,--每页大小@doCount bit=0, --返回记录总数,非0则返回@strWhere varchar(1500)='' --查询条件(注意不带where)ASdeclare @strSQL varchar(5000) --主语句declare @strTmp varchar(110) --临时变量declare @strOrder varchar(400) --排序类型declare @tblName varchar(255) --表名declare @strGetFields varchar(1000) --需要返回的列declare @fidName varchar(255) --排序的字段名declare @PageSize int --页大小declare @OrderType bit --设置排序类型,非0则降序set @tblName=@strTableset @strGetFields=@strFieldsset @fidName=@strSortFieldset @PageSize=@PgSizeset @OrderType=1if @doCount !=0 --返回记录总数 begin if @strWhere != '' set @strSQL=" select count(1) as Total from ["+@tblName+"] where "+@strWhere else set @strSQL=" select count(1) as Total from ["+@tblName+"]" endelse begin if @OrderType !=0 begin set @strTmp="<( select min " set @strOrder = " order by ["+@fidName+"] desc" --如果@OrderType不是0,就执行降序,这句很重要! end else begin set @strTmp=">( select max " set @strOrder = " order by ["+@fidName+"] asc" end if @PageIndex=1 begin if @strWhere != '' set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder else set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from ["+ @tblName + "] "+ @strOrder --如果是第一页就执行以上代码,这样会加快执行速度 end else begin --以下代码赋予了@strSQL以真正执行的SQL代码 set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" + @tblName + "] where [" + @fidName + "]" + @strTmp + "(["+ @fidName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["+ @fidName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"+ @strOrder if @strWhere != '' set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" + @tblName + "] where [" + @fidName + "]" + @strTmp + "([" + @fidName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " [" + @fidName + "] from [" + @tblName + "] where " + @strWhere + " " + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder end end exec(@strSQL)GO
0 0
- 高效储存过程分页
- 储存过程实现分页
- 分页储存过程
- 分页储存过程
- 分页储存过程
- 高效分页过程过程
- 通用的分页储存过程
- 3种分页储存过程
- sql储存过程实现分页
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- 高效分页存储过程
- Crystal Report水晶报表碰到的一些纠结问题
- Android中 Bitmap Drawable Paint的获取、转换以及使用
- IT职场法则
- 解构(let,第2部分)
- java基础--笔记14
- 高效储存过程分页
- 应用程序开发兼容性总结
- java基础--笔记15
- oracle教程之Oracle的存储结构关系
- SQLite入门教程(一)基本控制台(终端)
- Linux用户密码策略
- java基础--笔记16
- android ImageView android:adjustViewBounds属性的作用
- DataTable转泛型