MS SQL Server 2005 分页存储过程

CREATE PROCEDURE [dbo].[getPage]
 @pageSize  int,     --页尺寸
 @currentPage int = 1,    --当前页
 @fields   varchar(2000) = '*', --返回的字段
 @tablename  varchar(200),   --表名
 @orderString varchar(1000),   --排序字符串
 @whereString varchar(1000)   --条件字符串
AS
BEGIN
 DECLARE @sql varchar(2000)
 DECLARE @strOrder varchar(2000)
 DECLARE @strWhere varchar(2000)

 set @strOrder = REPLACE(RTRIM(LTRIM(@orderString)),'order by','')
 if @strOrder != ''
  set @strOrder = ' order by ' + @strOrder
 else
  set @strOrder = ' order by ID DESC'

 set @strWhere = REPLACE(RTRIM(LTRIM(@whereString)),'where','')
 if @strWhere != ''
  set @strWhere = ' where ' + @strWhere

 if @pageSize = 0
  set @sql = 'select ' + @fields + ' from ' + @tablename + @strWhere + @strOrder
 else
  if @currentPage = 1
   set @sql = 'select top(' + Str(@pageSize) + ') ' + @fields + ' from ' + @tablename + @strWhere + @strOrder
  else
   begin
    set @sql = 'select top(' + Str(@pageSize) + ') * from (select top(' + Str(@pageSize * @currentPage) + ') ' + @fields + ', ROW_NUMBER() OVER ('
    set @sql = @sql + @strOrder
    set @sql = @sql + ') As RowNumber From ' + @tablename
    set @sql = @sql + @strWhere
    set @sql = @sql + ') as t where t.RowNumber > ' + Str(@pageSize * (@currentPage - 1))
    set @sql = @sql + @strOrder
   end

 exec(@sql)
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值