分页存储过程
2009-07-28 15:03
218 查看
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UP_GetRecordByPageOrder]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[UP_GetRecordByPageOrder] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------ --用途:支持任意排序的分页存储过程 --说明: ------------------------------------ CREATE PROCEDURE UP_GetRecordByPageOrder @tblName varchar(255), -- 表名 @OrderfldName varchar(255), -- 排序字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @IsReCount bit = 1, -- 返回记录总数, 非 0 值则返回 @OrderType bit = 1, -- 设置排序类型, 非 0 值则降序 @strWhere varchar(1000)='' -- 查询条件 (注意: 不要加 where) AS declare @strSQL varchar(6000) -- 主语句 declare @strTmp varchar(400) -- 临时变量 declare @strOrder varchar(400) -- 排序类型 if @OrderType != 0 begin set @strTmp = '<(select min' set @strOrder = ' order by [' + @OrderfldName +'] desc' end else begin set @strTmp = '>(select max' set @strOrder = ' order by [' + @OrderfldName +'] asc' end set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '([' + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @OrderfldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' + @strOrder if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '([' + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @OrderfldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder if @PageIndex = 1 begin set @strTmp = '' if @strWhere != '' set @strTmp = ' where ' + @strWhere set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + ']' + @strTmp + ' ' + @strOrder end if @IsReCount != 0 set @strSQL = @strSQL+' select count(1) as Total from [' + @tblName + ']' if @strWhere!='' set @strSQL = @strSQL+' where ' + @strWhere print(@strSQL) exec (@strSQL) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
相关文章推荐
- [转]SQL存储过程分页
- 分页存储过程
- 分页存储过程整理-整理
- 一个通用的分页存储过程(原创)
- SQL Server 存储过程的分页方案比拼[转载自李洪根blogs]
- SQL Server的通用分页存储过程 未使用游标,速度更快!
- [转]SQL Server 存储过程的分页方案比拼
- 想找个分页的存储过程。。。
- 存储过程实现分页
- 最通用的分页存储过程
- 千万级通用的分页存储过程
- 常用的分页存储过程
- SQL Server两种分页的存储过程使用介绍
- 分页存储过程:自己写的
- Delphi调用SQL分页存储过程实例
- 通用分页存储过程注入问题解决方案:不用存储过程,通用分页查询方法
- ORACLE高效分页存储过程代码
- 不用存储实现的分页,效率和存储过程一样。
- 不错的sql分页存储过程