微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MSSQL2005 分页存储过程

 --调用方法:exec upPageDiv kucun,'id,ItemCode,ItemName','ItemCode asc','id>0',20,1,?,?  Create Procedure [dbo].[upPageDiv]      @TableName varchar(200),            --表名      @Fields varchar(5000)='*',          --字段名(认为*)      @OrderField varchar(5000),          --排序字段(必须!支持多字段)      @sqlWhere varchar(5000)=Null,       --条件语句(不用加where)      @pageSize int,                      --指定每页记录条数      @pageIndex int=1,                   --指定当前页码      @totalPage int output,              --返回总页数      @totalRecord int output             --返回总记录数  As  Begin      Begin Tran  --开始事务      Declare @sql nvarchar(4000);      --计算总记录数      If (@sqlWhere='' Or @sqlWhere=Null)          Set @sql='Select @totalRecord=Count(*) From '+@TableName      Else          Set @sql='Select @totalRecord=Count(*) From '+@TableName+' Where '+@sqlWhere      Exec sp_executesql @sql,N'@totalRecord int output',@totalRecord output      --计算总页数      Select @TotalPage=Ceiling((@totalRecord+0.0)/@PageSize)      If (@sqlWhere='' Or @sqlWhere=Null)          Set @sql='Select * From (Select ROW_NUMBER() Over(Order By '+@OrderField+') As rowID,'+@Fields+' From '+@TableName      Else          Set @sql='Select * From (Select ROW_NUMBER() Over(Order By '+@OrderField+') As rowID,'+@Fields+' From '+@TableName+' Where '+@sqlWhere      --处理页数超出范围情况      If @PageIndex<=0          Set @pageIndex=1      If @pageIndex>@TotalPage          Set @pageIndex=@TotalPage       --处理开始点和结束点      Declare @StartRecord int      Declare @EndRecord int           Set @StartRecord=(@pageIndex-1)*@PageSize+1      Set @EndRecord=@StartRecord+@pageSize-1      --继续合成sql语句      Set @sql=@sql+') As '+@TableName+' Where rowID Between '+Convert(varchar(50),@StartRecord)+' And '+Convert(varchar(50),@EndRecord)      Exec(@sql)      If @@Error<>0          Begin              RollBack Tran              Return -1          End      Else          Begin              Commit Tran              Return @totalRecord --返回记录总数          End  End

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐