--调用方法: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
总结以上是内存溢出为你收集整理的MSSQL2005 分页存储过程全部内容,希望文章能够帮你解决MSSQL2005 分页存储过程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)