日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
DB2 拉鏈表存儲過程的實現(xiàn)過程描述

此文章主要向大家描述的DB2 拉鏈表存儲過程的實際操作過程,在實際操作中我們大家根據(jù) T_depbal 賬戶余額表以及交易流水表,來生成拉鏈表,在拉鏈表中,開始日期為2006-1-1 結(jié)束日期為2050-12-31日。

成都創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)按需求定制設(shè)計,是成都網(wǎng)站設(shè)計公司,為成都宣傳片制作提供網(wǎng)站建設(shè)服務,有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計服務:原型圖制作、網(wǎng)站創(chuàng)意設(shè)計、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站制作熱線:18982081108

建表

 
 
 
  1. create table T_depchg  
  2. (  
  3. ACCOUNT_NO int,  
  4. START_DATE DATE,  
  5. ENT_DATE DATE,  
  6. BALANCE double,  
  7. AVG_BAL double  
  8. )  
  9. CREATE TABLE T_DEPBAL  
  10. (  
  11. ACCOUNT_NO int,  
  12. BALANCE double  
  13. )  

------------------------------------------------------------------------------

 
 
 
  1. insert into t_journal values(date('2006-1-4'),2,200,1)  
  2. create table t_journal  
  3. (  
  4. TRANS_DATE DATE,  
  5. ACCOUNT_NO int,  
  6. AMT double,  
  7. FLAG double  
  8. )  
  9.  

----------------------------------------------------------------
-DB2 拉鏈表存儲過程
----------------------------------------------------------------

 
 
 
  1. create procedure bal  
  2. RESULT SETS 1  
  3. MODIFIES SQL DATA  
  4. begin  
  5. declare v_account int;  
  6. declare v_balance int default 0;  
  7. declare sqlcode int default 0;  
  8. declare v_days int default 0;  
  9. declare var_balance int default 0;  
  10. declare v_all int default 0;  
  11. declare v_acc int;  
  12. declare v_start_date date;  
  13. declare v_end_date date;  
  14. declare v_trans_date date;  
  15. declare v_max_date date;  
  16. declare v_bt_days int default 0;  
  17. declare v_in int;  
  18. declare v_de int;  
  19. declare v_amt int default 0;  
  20. declare v_avg_bal int default 0;  
  21. declare v_bal int;  
  22. declare cur_account cursor with return for select * from t_depbal;  
  23. --cur_journal definition  
  24. declare cur_journal cursor for   
  25. select account_no, trans_date,COALESCE(sum(Out) ,0) as Out,COALESCE(sum(de) ,0) as de,COALESCE(sum(de),0)-COALESCE(sum(Out) ,0) as re from   
  26. (  
  27. select trans_date,account_no,  
  28. case when flag=0 then Amt end as Out,  
  29. case when flag=1 then Amt end as de  
  30. from t_journal where account_no =v_account 
  31. Order By trans_Date   
  32. ) t1  
  33. group by trans_date, account_no  
  34. order by account_no,trans_date;  
  35. --max_date_cur   
  36. declare max_date_cur cursor for   
  37. select max(trans_date) from t_journal  
  38. where account_no=v_account;  
  39. open cur_account  
  40. delete from t_depchg;  
  41. open cur_account;  
  42. out_loop:  
  43. loop  
  44. fetch cur_account into v_account,v_balance;  
  45. IF SQLCODE =100 then leave out_loop;  
  46. end if;  
  47. INSERT INTO DEMO VALUES(V_ACCOUNT,V_BALANCE);  
  48. set var_balance=v_balance;  
  49. set v_all=0;  
  50. set v_start_date =date('2006-1-1');  
  51. -- open cur_journal  
  52. open cur_journal;  
  53. fetch_loop:  
  54. loop  
  55. fetch cur_journal into v_acc,v_trans_date,v_in,v_de,v_amt;  
  56. IF SQLCODE =100 then leave fetch_loop;  
  57. end if;  
  58. set v_bal = var_balance;  
  59.  
  60. set v_end_date = v_trans_date;  
  61. set v_days=days(v_end_date)-days(date('2006-1-1'));  
  62. set v_bt_days=(days(v_end_date)-days(v_start_date));  
  63. set v_allv_all =v_all+(var_balance*v_bt_days);  
  64. set v_avg_bal = v_all/v_days;  
  65. insert into t_depchg values(v_acc,v_start_date,v_end_date,v_bal,v_avg_bal);   
  66. set var_balancevar_balance=var_balance+v_amt;  
  67. set v_start_date =v_end_date;  
  68. -- processing dead date  
  69. if v_start_date=v_max_date then  
  70. set v_days=days('2050-12-31')-days(date('2006-1-1'));  
  71. set v_bt_days=(days('2050-12-31')-days(v_start_date));  
  72. set v_allv_all =v_all+(var_balance*v_bt_days);  
  73. set v_avg_bal = v_all/v_days;  
  74. insert into t_depchg values(v_acc,v_start_date,date('2050-12-31'),var_balance,v_avg_bal);   
  75. end if;  
  76. open max_date_cur;  
  77. date_loop:  
  78. loop  
  79. fetch max_date_cur into v_max_date;  
  80. IF SQLCODE =100 then leave date_loop;  
  81. end if;  
  82. end loop;  
  83. close max_date_cur;  
  84. end loop;  
  85. close cur_journal;  
  86. end loop;  
  87. close cur_account;  
  88. end@  
  89. drop procedure bal  
  90. call bal  
  91. select * from t_depchg  

以上的相關(guān)內(nèi)容就是對DB2 拉鏈表存儲過程的介紹,望你能有所收獲。

【編輯推薦】

  1. DB2數(shù)據(jù)庫的部分日常實用操作的闡述
  2. DB2數(shù)據(jù)庫為單個會話的鎖定技巧如何其作用?
  3. DB2數(shù)據(jù)庫SQL編碼優(yōu)化與性能描述
  4. 對DB2數(shù)據(jù)庫編目概念正確理解
  5. DB2未使用索引的查找方案描述

本文標題:DB2 拉鏈表存儲過程的實現(xiàn)過程描述
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/djsojie.html