Oracle分頁存儲過程在ibatis中如何調用
你是否對ibatis調用Oracle分頁存儲過程的實際操作感到十分頭疼?如果是這樣子的話,以下的文章將會給你相應的解決方案,以下的文章主要是介紹ibatis調用Oracle分頁存儲過程的操作方案,以下就是相關內容的具體描述。
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
 - /**
 - * by chenjianxin 2008-5-3
 - *
 - */
 - v_PageSize number;
 - v_PageIndex number;
 - v_SQL_Count varchar2(4000);
 - v_SQL varchar2(4000);
 - v_StartIndex number;
 - v_EndIndex number;
 - begin
 - v_PageSize:=pageSize;
 - if v_PageSize=0 then
 - v_PageSize:=1;
 - end if;
 
統計記錄數量
- v_SQL_Count := 'select count(*) from (' ? ? sqlscript ? ?') a ';
 - execute immediate v_SQL_Count into totalCount;
 
計算總頁數
- totalPage:=CEIL(totalCount/v_PageSize);
 
驗證頁號 如果頁號大余了***頁數,返回***一頁
- v_PageIndex:=pageIndex;
 - if v_PageIndex>totalPage then
 - v_PageIndex:=totalPage;
 - end if;
 
計算開始的Index和結束的Index
- v_StartIndex:=(v_PageIndex-1)*v_PageSize 1;
 - v_EndIndex:=v_PageIndex*v_PageSize;
 - v_SQL:='SELECT /* FIRST_ROWS */* FROM (';
 - v_SQLv_SQL:=v_SQL ? ?' SELECT A.*, ROWNUM RN ';
 - v_SQLv_SQL:=v_SQL ? ?' FROM (' ? ?sqlscript ? ?') A ';
 - v_SQLv_SQL:=v_SQL ? ?' WHERE ROWNUM <= ' ? ?v_EndIndex;
 - v_SQLv_SQL:=v_SQL ? ?')WHERE RN >= ' ? ?v_StartIndex;
 - open v_cur for v_SQL;
 - end P_QuerySplit;
 
上述的相關內容就是對ibatis調用Oracle分頁存儲過程的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】















 
 
 
 
 
 
 