程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle分頁存儲過程的調用在ibatis中

Oracle分頁存儲過程的調用在ibatis中

編輯:Oracle數據庫基礎

以下的文章主要介紹的是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 返回游標

  1. ) is  
  2. /**  
  3. * by chenjianxin 2008-5-3  
  4. *  
  5. */  
  6. v_PageSize number;  
  7. v_PageIndex number;  
  8. v_SQL_Count varchar2(4000);  
  9. v_SQL varchar2(4000);  
  10. v_StartIndex number;  
  11. v_EndIndex number;  
  12. begin  
  13. v_PageSize:=pageSize;  
  14. if v_PageSize=0 then  
  15. v_PageSize:=1;  
  16. end if;  

ibatis調用Oracle分頁存儲過程中需要統計記錄數量

  1. v_SQL_Count :'select count(*) from (' ? ? sqlscript ? ?') a ';  
  2. execute immediate v_SQL_Count into totalCount;  

計算總頁數

  1. totalPage:=CEIL(totalCount/v_PageSize); 

驗證頁號 如果頁號大余了最大頁數,返回最後一頁

  1. v_PageIndex:=pageIndex;  
  2. if v_PageIndex>totalPage then  
  3. v_PageIndex:=totalPage;  
  4. end if;  

計算開始的Index和結束的Index

  1. v_StartIndex:=(v_PageIndex-1)*v_PageSize 1;  
  2. v_EndIndex:=v_PageIndex*v_PageSize;  
  3. v_SQL:='SELECT /* FIRST_ROWS */* FROM (';  
  4. v_SQLv_SQL:=v_SQL ? ?' SELECT A.*, ROWNUM RN ';  
  5. v_SQLv_SQL:=v_SQL ? ?' FROM (' ? ?sqlscript ? ?') A ';  
  6. v_SQLv_SQL:=v_SQL ? ?' WHERE ROWNUM <= ' ? ?v_EndIndex;  
  7. v_SQLv_SQL:=v_SQL ? ?')WHERE RN >= ' ? ?v_StartIndex;  
  8. open v_cur for v_SQL;  
  9. end P_QuerySplit;   
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved