最近的做些东西涉及到了,判断用户添加的某条记录处于将来分页的第几页,想了一下用存储过程实现也不错,
自己做了一个小测试,测试方法如下:
#drop procedure if exists getPageNo
create procedure getPageNo
(
in id varchar(10)
)
begin
declare pageNo int;
declare pageSize int;
declare pageCount int;
declare startIndex int;
declare endIndex int;
declare returnNo int;
set pageSize=10;
set pageNo = 1;
set pageCount=(select ceiling(count(*)/pageSize) from article); #get the record count
set endIndex=0;
set startIndex=(pageNo-1)*pageSize;
set endIndex=pageSize;
set @idCount=0;
loop_label:
while pageNo <= pageCount do
set @sqlcnt=concat('select count(*) into @idCount from(select orgid from article order by center,service limit ',startIndex,',',endIndex,') as tmp where
a_id=/'',id,'/'');
prepare s_cnt from @sqlcnt;
execute s_cnt;
deallocate prepare s_cnt;
if((@idCount)!=0) then
set returnNo=pageNo;
leave loop_label;
end if;
set pageNo = pageNo + 1;
set startIndex = (pageNo-1) * pageSize;
set endIndex = pageSize;
end while;
#show result
select returnNo ;
end;
测试存储过程:
call getPageNo('4124');
因为我没有给存储过程返回值,所以我没有把结果存到返回值中。
自己做了一个小测试,测试方法如下:
#drop procedure if exists getPageNo
create procedure getPageNo
(
in id varchar(10)
)
begin
declare pageNo int;
declare pageSize int;
declare pageCount int;
declare startIndex int;
declare endIndex int;
declare returnNo int;
set pageSize=10;
set pageNo = 1;
set pageCount=(select ceiling(count(*)/pageSize) from article); #get the record count
set endIndex=0;
set startIndex=(pageNo-1)*pageSize;
set endIndex=pageSize;
set @idCount=0;
loop_label:
while pageNo <= pageCount do
set @sqlcnt=concat('select count(*) into @idCount from(select orgid from article order by center,service limit ',startIndex,',',endIndex,') as tmp where
a_id=/'',id,'/'');
prepare s_cnt from @sqlcnt;
execute s_cnt;
deallocate prepare s_cnt;
if((@idCount)!=0) then
set returnNo=pageNo;
leave loop_label;
end if;
set pageNo = pageNo + 1;
set startIndex = (pageNo-1) * pageSize;
set endIndex = pageSize;
end while;
#show result
select returnNo ;
end;
测试存储过程:
call getPageNo('4124');
因为我没有给存储过程返回值,所以我没有把结果存到返回值中。