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

DB2數據庫通用存儲過程分頁程序“大拌菜”

編輯:DB2教程

文章主要描述的是DB2數據庫通用存儲過程分頁程序,假如你在實際操作中遇到DB2數據庫通用存儲過程分頁程序,但是你卻不知道對其如何對其正確的進行操作的話,那麼以下的文章對你而言一定是良師益友。

CREATE PROCEDURE SALES.DB2PAGINATION(IN ITBNAME VARCHAR(2000),-- 表名

IN ISHOWFIELD VARCHAR(1000),-- 顯示字段

IN IJOIN VARCHAR(1000),-- 聯接條件如:內聯、外聯)

IN IWHERE VARCHAR(2000),-- 查詢條件 (注意: 不要加 WHERE)

IN IORDER VARCHAR(100),-- 排序條件 (注意: 不要加 ORDER BY)

IN IPAGESIZE INTEGER,-- 頁尺寸 如果為0 默認返回前一百萬條數據可以認為是返回所有數據

INOUT IOCURRENTPAGEIX INTEGER,-- 輸入和輸出:當前頁

OUT OPAGESTARTROW INTEGER,-- 輸出:當前開始行

OUT OPAGEENDROW INTEGER,-- 輸出:當前結束行

OUT OTOTALROWS INTEGER,-- 輸出:當前總記錄數

OUT OHASPREVIOUSPAGE INTEGER,-- 輸出:是否有上一頁

OUT OHASNEXTPAGE INTEGER,-- 輸出:是否有下一頁

OUT OTOTALPAGES INTEGER,-- 輸出:總頁數

OUT OERROR VARCHAR(100))-- 輸出:錯誤信息

RESULT SETS 1

MODIFIES SQL DATA

NOT DETERMINISTIC

LANGUAGE SQL

BEGIN

/**//*----------------------------------------------------------------

* Copyright (C) 2007 Huacius

* 版權所有。

*

* 存儲過程分頁

*

*

//-----------------------------------------------------------------------*/

DECLARE STRSQL VARCHAR(6000);-- 主語句

DECLARE result CURSOR WITH RETURN TO CALLER FOR S2;

DECLARE exit handler FOR sqlexception-- DB2數據庫通用存儲過程分頁程序之異常捕獲

  1. BEGIN  
  2. set OERROR = 'error!';  
  3. END;  
  4. -- BODY start --  
  5. if(iwhere <> '') then  
  6. set iwhere = ' where ' || iwhere;  
  7. end if;  
  8. if(iorder <> '') then  
  9. set iorder = 'order by ' || iorder;  
  10. end if;  
  11. if(ijoin <> '') then  
  12. set ijoin = ' ' || ijoin;  
  13. end if;  
  14. set strsql = 'select count(*) from ' || itbname || ijoin || iwhere;  
  15. prepare s2 from strsql;  
  16. open result;  
  17. fetch result into ototalrows;  

總記錄數

close result;

if(ipagesize = 0) then

set ipagesize = 1000000;-- 每頁顯示數

end if;

set ototalpages = (ototalrows - 1) / ipagesize + 1;-- 總頁數

if(iocurrentpageix < 1) then

set iocurrentpageix = 1;-- 當前頁

else

if(iocurrentpageix > ototalpages) then

set iocurrentpageix = ototalpages;

end if;

end if;

set opagestartrow = ipagesize * (iocurrentpageix -1) + 1;-- 每頁開始數

if(iocurrentpageix = ototalpages) then

set opageendrow = ototalrows;-- 每頁結束數

else

set opageendrow = ipagesize * iocurrentpageix;

end if;

if(iocurrentpageix > 1) then

set ohaspreviouspage = 1;-- 是否有上一頁

else

set ohaspreviouspage = 0;

end if;

if(iocurrentpageix < ototalpages) then

set ohasnextpage = 1;-- 是否有下一頁

  1. else  
  2. set ohasnextpage = 0;  
  3. end if;  
  4. set strsql = 'select * from (select rownumber() over(' || iorder || ') as rownum,'  
  5. || ishowfield   
  6. || ' from '  
  7. || itbname  
  8. || ijoin  
  9. || iwhere  
  10. || ') as temp where rownum between ' || rtrim(char(opagestartrow)) || ' and ' || rtrim(char(opageendrow));  
  11. prepare s2 from strsql;  
  12. open result;  
  13. -- BODY end --  
  14. END  

以上的相關內容就是對DB2數據庫通用存儲過程分頁程序的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved