Sql2000存储过程分页
ALTER PROCEDURE [dbo].[procPageChangeForSql2000] ( @fromSql varchar(3000), @querySql varchar(2000), @whereSql varchar(1300), @orderBySql varchar(200), @keyField varchar(100), @PageSize int, --每页多少条记录 @PageIndex int, --指定当前为第几页 @TotalRecord int output --返回总记录数 ) AS BEGIN declare @sql varchar(8000) declare @totalCountSql nvarchar(4000) declare @StartRecord int declare @pageKeyField varchar(100) declare @whereSql2 varchar(1300) declare @nPageCount int --处理开始点和结束点 IF (@whereSql! = '' AND @whereSql IS NOT NULL) set @whereSql=' where '+ @whereSql else set @whereSql='' IF (@orderBySql! = '' AND @orderBySql IS NOT NULL) set @orderBySql=' order by '+ @orderBySql else set @orderBySql='' --获取关键字段 set @pageKeyField= substring(@keyField,CHARINDEX(N'.',@keyField)+1,LEN(@keyField)-CHARINDEX(N'.',@keyField)) --计算总条数 set @totalCountSql= N'select @TotalRecord = count(*) from ' + @fromSql+@whereSql --总记录数语句 exec sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回总记录数 if(@PageSize>-1) begin set @nPageCount =CONVERT(int, ceiling(@TotalRecord*1.0/@PageSize)) if(@nPageCount=0 and @PageIndex != 0) set @PageIndex = 0 else if (@PageIndex > (@nPageCount - 1)) set @PageIndex = 0 set @StartRecord = (@PageIndex)*@PageSize --组织Sql语句 IF (@whereSql! = '' AND @whereSql IS NOT NULL) set @whereSql2=@whereSql+' and p_l.'+@pageKeyField+' is null ' else set @whereSql2=' where p_l.'+@pageKeyField+' is null ' set @sql='select top '+str(@PageSize)+' '+@querySql+' from ' +@fromSql +' left join (select top '+str(@StartRecord)+' '+@keyField+' from ' +@fromSql +@whereSql +@orderBySql +') p_l on p_l.'+@pageKeyField+'='+@keyField +@whereSql2 +@orderBySql end else begin set @sql='select '+@querySql+' from '+@fromSql+@whereSql+@orderBySql end Exec(@sql) END
作者:阿笨
【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558
【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616
【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586
【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:829227829
【官方QQ五群:.NET Core跨平台开发技术(可加入)】:647639415
【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628
【51CTO学院】:https://edu.51cto.com/sd/66c64
【微信公众号】:微信搜索:跟着阿笨一起玩NET