以下的文章主要介绍的是Oracle分页存储过程在ibatis中如何正确调用的实际操作步骤,以及在其实际操作中有那些的事项是值得我们注意的,以下就是正文主要内容的描述,希望会给你带来一些帮助在此方面。
Oracle 分页:
create or replace procedure P_QuerySplit(
sqlscript varchar2, 表名/SQL语句
pageSize integer, 每页记录数
pageIndex integer, 当前页
totalCount out number, 总记录数
totalPage out number, 总页数
v_cur out sys_refcursor 返回游标
)is /** *bychenjianxin2008-5-3 * */ v_PageSizenumber; v_PageIndexnumber; v_SQL_Countvarchar2(4000); v_SQLvarchar2(4000); v_StartIndexnumber; v_EndIndexnumber; begin v_PageSize:=pageSize; ifv_PageSize=0then v_PageSize:=1; endif;
ibatis调用Oracle分页存储过程中需要统计记录数量
v_SQL_Count:='selectcount(*)from('??sqlscript??')a'; executeimmediatev_SQL_CountintototalCount;
计算总页数
totalPage:=CEIL(totalCount/v_PageSize);
验证页号 如果页号大余了***页数,返回***一页
v_PageIndex:=pageIndex; ifv_PageIndex>totalPagethen v_PageIndex:=totalPage; endif;
计算开始的Index和结束的Index
v_StartIndex:=(v_PageIndex-1)*v_PageSize1; v_EndIndex:=v_PageIndex*v_PageSize; v_SQL:='SELECT/*FIRST_ROWS*/*FROM('; v_SQLv_SQL:=v_SQL??'SELECTA.*,ROWNUMRN'; v_SQLv_SQL:=v_SQL??'FROM('??sqlscript??')A'; v_SQLv_SQL:=v_SQL??'WHEREROWNUM<='??v_EndIndex; v_SQLv_SQL:=v_SQL??')WHERERN>='??v_StartIndex; openv_curforv_SQL; endP_QuerySplit;
相关文章
标签:Oracle