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
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有