sguf冲销脚本的实现

1.该脚本为PCISS项目的sguf冲销脚本:

  1 DECLARE 
  2 type typ_sguf_table is table of sguf_rowid_tab_1%rowtype ;
  3  sguf_tab typ_sguf_table;
  4 v_insert_sql cLOB; 
  5 BEGIN 
  6 SELECT * BULK COLLECT INTO sguf_tab
  7 FROM sguf_rowid_tab_1 s
  8 WHERE s.ID=1053235 AND s.NO='BSD20170901000054' ;
  9 IF sguf_tab.last >1 THEN
 10  RETURN ;
 11  ELSE
 12 FOR i IN sguf_tab.first .. sguf_tab.last  LOOP
 13 
 14 
 15 v_insert_sql :='
 16 INSERT INTO sguf_rowid_tab_1 
 17 VALUES ('||
 18 sguf_tab(i).ID                               ||' , '||
 19 chr(39)||sguf_tab(i).PRODUCTCODE||chr(39)                   ||' , '||
 20 chr(39)||sguf_tab(i).NO||chr(39)                            ||' , '||
 21 chr(39)||sguf_tab(i).SUBNO||chr(39)                         ||' , '||
 22 'to_date('||CHR(39)||sguf_tab(i).ACCOUNTDATE||CHR(39)||')'                                   ||' , '||
 23 'to_date('||CHR(39)||sguf_tab(i).DEALDATE||CHR(39)||')'          ||' , '||        
 24 'to_date('||CHR(39)||sguf_tab(i).STOPDATE||CHR(39)||')'                                       ||' , '||
 25 chr(39)||sguf_tab(i).SIDE||chr(39)                          ||' , '||
 26 sguf_tab(i).MEMBERID                                        ||' , '||
 27 chr(39)||sguf_tab(i).MEMBERFULLNAME||chr(39)                ||' , '||
 28 chr(39)||sguf_tab(i).MEMBERABBRNAME||chr(39)                ||' , '||
 29 chr(39)||sguf_tab(i).MEMBERCODE||chr(39)                    ||' , '||
 30 chr(39)||sguf_tab(i).MEMBERPARTCODE||chr(39)                ||' , '||
 31 chr(39)||sguf_tab(i).MEMBERTYPE||chr(39)                    ||' , '||
 32 chr(39)||sguf_tab(i).DEALCURRENCY||chr(39)                  ||' , '||
 33 chr(39)||sguf_tab(i).DEALOUTCURRENCY||chr(39)               ||' , '||
 34 CASE WHEN sguf_tab(i).EXCHANGERATE IS NULL THEN 'NULL' ELSE sguf_tab(i).EXCHANGERATE END                                    ||' , '||
 35 CASE WHEN sguf_tab(i).DEALPRICE<>0 THEN  '-'||sguf_tab(i).DEALPRICE ELSE '0'  END                                      ||' , '||
 36 CASE WHEN sguf_tab(i).DEALPRICECNY<>0 THEN  '-'||sguf_tab(i).DEALPRICECNY ELSE '0'  END                                  ||' , '||
 37 CASE WHEN sguf_tab(i).DEALPRICEUSD <>0 THEN  '-'||sguf_tab(i).DEALPRICEUSD  ELSE '0'  END                                 ||' , '||
 38 CASE WHEN sguf_tab(i).MEMBERFEEPRICE <>0 THEN  '-'||sguf_tab(i).MEMBERFEEPRICE  ELSE '0'  END                              ||' , '||
 39 CASE WHEN sguf_tab(i).MEMBERFEEPRICECNY <>0 THEN  '-'||sguf_tab(i).MEMBERFEEPRICEcny  ELSE '0'  END                           ||' , '||
 40 CASE WHEN sguf_tab(i).MEMBERFEEPRICEUSD  <>0 THEN  '-'||sguf_tab(i).MEMBERFEEPRICEusd  ELSE '0'  END                          ||' , '||
 41 chr(39)||sguf_tab(i).DEPARTMENT||chr(39)                    ||' , '||
 42 CASE WHEN sguf_tab(i).PTCOUNT IS NULL THEN 'NULL' ELSE sguf_tab(i).PTCOUNT||'' END                                          ||' , '||
 43 'to_date('||CHR(39)||sguf_tab(i).STARTDATE||CHR(39)||')'                                       ||' , '||
 44 'to_date('||CHR(39)||sguf_tab(i).MATURITYDATE||CHR(39)||')'                                ||' , '||
 45 CASE WHEN sguf_tab(i).RATE        IS NULL THEN 'NULL' ELSE  sguf_tab(i).RATE||''             END                     ||' , '||
 46 CASE WHEN sguf_tab(i).SELFBROKERID IS NULL THEN 'NULL' ELSE sguf_tab(i).SELFBROKERID||''        END                          ||' , '||
 47 chr(39)||sguf_tab(i).SELFBROKERCODE||chr(39)                ||' , '||
 48 chr(39)||sguf_tab(i).SELFBROKERNAME||chr(39)                ||' , '||
 49 CASE WHEN sguf_tab(i).FORMCREATORID IS NULL THEN 'NULL' ELSE sguf_tab(i).FORMCREATORID||''         END                         ||' , '||
 50 chr(39)||sguf_tab(i).FORMCREATORNAME||chr(39)               ||' , '||
 51 CASE WHEN sguf_tab(i).FORMCREATORTIME   IS NULL THEN 'NULL' ELSE chr(39)||sguf_tab(i).FORMCREATORTIME||chr(39)      END                        ||' , '||
 52 CASE WHEN sguf_tab(i).ACCOUNTDAYS      IS NULL THEN 'NULL' ELSE  sguf_tab(i).ACCOUNTDAYS||''             END                ||' , '||
 53 CASE WHEN sguf_tab(i).BROKERID1   IS NULL THEN 'NULL' ELSE    sguf_tab(i).BROKERID1||''                     END           ||' , '||
 54 chr(39)||sguf_tab(i).BROKERCODE1||chr(39)                   ||' , '||
 55 chr(39)||sguf_tab(i).BROKERNAME1||chr(39)                   ||' , '||
 56 CASE WHEN  sguf_tab(i).PARTYMONEY1  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY1=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY1 END                                    ||' , '||
 57 CASE WHEN  sguf_tab(i).PARTYMONEYCNY1 IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY1=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYCNY1 END                                ||' , '||
 58 CASE WHEN  sguf_tab(i).PARTYMONEYUSD1 IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSD1=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYUSD1 END                              ||' , '||
 59 CASE WHEN sguf_tab(i).PERCENT1    IS NULL THEN 'NULL' ELSE  sguf_tab(i).PERCENT1||''       END       ||' , '||
 60 CASE WHEN sguf_tab(i).BROKERID2   IS NULL THEN 'NULL' ELSE    sguf_tab(i).BROKERID2||''   END     ||' , '||
 61 chr(39)||sguf_tab(i).BROKERCODE2||chr(39)                   ||' , '||
 62 chr(39)||sguf_tab(i).BROKERNAME2||chr(39)                   ||' , '||
 63 CASE WHEN  sguf_tab(i).PARTYMONEY2  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY2=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY2 END                                  ||' , '||
 64 CASE WHEN sguf_tab(i).PARTYMONEYCNY2  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY2=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYcny2 END                                ||' , '||
 65 CASE WHEN  sguf_tab(i).PARTYMONEYUSD2   IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSD2=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYusd2 END                               ||' , '||
 66 CASE WHEN sguf_tab(i).PERCENT2   IS NULL THEN 'NULL' ELSE sguf_tab(i).PERCENT2||''    END                                 ||' , '||
 67 CASE WHEN sguf_tab(i).BROKERID3  IS NULL THEN 'NULL' ELSE sguf_tab(i).BROKERID3||''    END                                ||' , '||
 68 chr(39)||sguf_tab(i).BROKERCODE3||chr(39)                   ||' , '||
 69 chr(39)||sguf_tab(i).BROKERNAME3||chr(39)                   ||' , '||
 70 CASE WHEN sguf_tab(i).PARTYMONEY3 IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY3=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY3  end                                 ||' , '||
 71 CASE WHEN sguf_tab(i).PARTYMONEYCNY3  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY3=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYcny3 end                               ||' , '||
 72 CASE WHEN sguf_tab(i).PARTYMONEYUSD3 IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSD3=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYusd3 end                              ||' , '||
 73 CASE WHEN sguf_tab(i).PERCENT3  IS NULL THEN 'NULL' ELSE  sguf_tab(i).PERCENT3||''  END                             ||' , '||
 74 CASE WHEN sguf_tab(i).BROKERID4  IS NULL THEN 'NULL' ELSE  sguf_tab(i).BROKERID4||''         END                          ||' , '||
 75 chr(39)||sguf_tab(i).BROKERCODE4||chr(39)                   ||' , '||
 76 chr(39)||sguf_tab(i).BROKERNAME4||chr(39)                   ||' , '||
 77 CASE WHEN sguf_tab(i).PARTYMONEY4  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY4=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY4 end                                ||' , '||
 78 CASE WHEN sguf_tab(i).PARTYMONEYCNY4  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY4=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYcny4 end                               ||' , '||
 79 CASE WHEN sguf_tab(i).PARTYMONEYUSD4  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSD4=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYUSD4 END                               ||' , '||
 80 CASE WHEN sguf_tab(i).PERCENT4   IS NULL THEN 'NULL' ELSE sguf_tab(i).PERCENT4||''       END                              ||' , '||
 81 CASE WHEN sguf_tab(i).BROKERID5  IS  NULL THEN 'NULL'  ELSE     sguf_tab(i).BROKERID5||''       END                           ||' , '||
 82 chr(39)||sguf_tab(i).BROKERCODE5||chr(39)                   ||' , '||
 83 chr(39)||sguf_tab(i).BROKERNAME5||chr(39)                   ||' , '||
 84 CASE WHEN sguf_tab(i).PARTYMONEY5    IS NULL THEN 'NULL'  WHEN sguf_tab(i).PARTYMONEY5=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY5  END                              ||' , '||
 85 CASE WHEN sguf_tab(i).PARTYMONEYCNY5 IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY5=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYCNY5 END                                ||' , '||
 86 CASE WHEN sguf_tab(i).PARTYMONEYUSD5  IS NULL THEN 'NULL'  WHEN sguf_tab(i).PARTYMONEYUSD5=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYUSD5 END                            ||' , '||
 87 CASE WHEN sguf_tab(i).PERCENT5   IS NULL THEN 'NULL' ELSE sguf_tab(i).PERCENT5||'55---'        END ||' , '||
 88 CASE WHEN sguf_tab(i).BROKERID6  IS NULL THEN 'NULL' ELSE  sguf_tab(i).BROKERID6||'66--'      END   ||' , '||
 89 chr(39)||sguf_tab(i).BROKERCODE6||chr(39)                   ||' , '||
 90 chr(39)||sguf_tab(i).BROKERNAME6||chr(39)                   ||' , '||
 91 CASE WHEN sguf_tab(i).PARTYMONEY6    IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY6=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY6  END                               ||' , '||
 92 CASE WHEN sguf_tab(i).PARTYMONEYCNY6  IS NULL THEN 'NULL'  WHEN sguf_tab(i).PARTYMONEYCNY6=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYCNY6  END                             ||' , '||
 93 CASE WHEN sguf_tab(i).PARTYMONEYUSD6  IS NULL THEN 'NULL'  WHEN sguf_tab(i).PARTYMONEYUSD6=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYUSD6  END                            ||' , '||
 94 CASE WHEN sguf_tab(i).PERCENT6  IS NULL THEN 'NULL' ELSE  sguf_tab(i).PERCENT6||''  END                                   ||' , '||
 95 CASE WHEN sguf_tab(i).BROKERID7 IS NULL THEN 'NULL' ELSE  sguf_tab(i).BROKERID7||''    END                                  ||' , '||
 96 chr(39)||sguf_tab(i).BROKERCODE7||chr(39)                   ||' , '||
 97 chr(39)||sguf_tab(i).BROKERNAME7||chr(39)                   ||' , '||
 98 CASE WHEN sguf_tab(i).PARTYMONEY7   IS NULL THEN 'NULL'  WHEN sguf_tab(i).PARTYMONEY7=0 THEN '0'  ELSE   '-'||sguf_tab(i).PARTYMONEY7  END                                ||' , '||
 99 CASE WHEN sguf_tab(i).PARTYMONEYCNY7    IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY7=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYCNY7 END                             ||' , '||
100 CASE WHEN sguf_tab(i).PARTYMONEYUSD7  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSD7=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYUSD7 END                               ||' , '||
101 CASE WHEN sguf_tab(i).PERCENT7    IS NULL THEN 'NULL' ELSE sguf_tab(i).PERCENT7||''     END                               ||' , '||
102 CASE WHEN sguf_tab(i).BROKERID8  IS NULL THEN 'NULL' ELSE   sguf_tab(i).BROKERID8||''   END                               ||' , '||
103 chr(39)||sguf_tab(i).BROKERCODE8||chr(39)                   ||' , '||
104 chr(39)||sguf_tab(i).BROKERNAME8||chr(39)                   ||' , '||
105 CASE WHEN sguf_tab(i).PARTYMONEY8    IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY8=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY8  END                             ||' , '||
106 CASE WHEN sguf_tab(i).PARTYMONEYCNY8   IS NULL THEN 'NULL'  WHEN sguf_tab(i).PARTYMONEYCNY8=0 THEN '0'  ELSE   '-'||sguf_tab(i).PARTYMONEYCNY8 END                              ||' , '||
107 CASE WHEN sguf_tab(i).PARTYMONEYUSD8   IS NULL THEN 'NULL'  WHEN sguf_tab(i).PARTYMONEYUSD8=0 THEN '0'   ELSE   '-'||sguf_tab(i).PARTYMONEYUSD8 END                              ||' , '||
108 CASE WHEN sguf_tab(i).PERCENT8   IS NULL THEN 'NULL' ELSE   sguf_tab(i).PERCENT8||''   END                               ||' , '||
109 CASE WHEN sguf_tab(i).BROKERID9   IS NULL THEN 'NULL' ELSE  sguf_tab(i).BROKERID9||''  END                                 ||' , '||
110 chr(39)||sguf_tab(i).BROKERCODE9||chr(39)                   ||' , '||
111 chr(39)||sguf_tab(i).BROKERNAME9||chr(39)                   ||' , '||
112 CASE WHEN sguf_tab(i).PARTYMONEY9   IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY9=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY9 END                                ||' , '||
113 CASE WHEN sguf_tab(i).PARTYMONEYCNY9  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY9=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYCNY9 END                               ||' , '||
114 CASE WHEN sguf_tab(i).PARTYMONEYUSD9  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSD9=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYUSD9 END                               ||' , '||
115 CASE WHEN sguf_tab(i).PERCENT9     IS NULL THEN 'NULL' ELSE  sguf_tab(i).PERCENT9||''  END                                ||' , '||
116 CASE WHEN sguf_tab(i).BROKERID10  IS NULL THEN 'NULL' ELSE  sguf_tab(i).BROKERID10||'' END                                 ||' , '||
117 chr(39)||sguf_tab(i).BROKERCODE10||chr(39)                  ||' , '||
118 chr(39)||sguf_tab(i).BROKERNAME10||chr(39)                  ||' , '||
119 CASE WHEN sguf_tab(i).PARTYMONEY10   IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEY10=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEY10 END                               ||' , '||
120 CASE WHEN sguf_tab(i).PARTYMONEYCNY10  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNY10=0 THEN '0'  ELSE   '-'||sguf_tab(i).PARTYMONEYCNY10 END                              ||' , '||
121 CASE WHEN sguf_tab(i).PARTYMONEYUSD10   IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSD10=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYUSD10 END                             ||' , '||
122 CASE WHEN sguf_tab(i).PERCENT10    IS NULL THEN 'NULL' ELSE  sguf_tab(i).PERCENT10||'' END                                 ||' , '||
123 CASE WHEN sguf_tab(i).BROKERIDX   IS NULL THEN 'NULL' ELSE  sguf_tab(i).BROKERIDX||'' END                                    ||' , '||
124 chr(39)||sguf_tab(i).BROKERCODEX||chr(39)                   ||' , '||
125 chr(39)||sguf_tab(i).BROKERNAMEX||chr(39)                   ||' , '||
126 CASE WHEN sguf_tab(i).PARTYMONEYX     IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYX=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYX  END                            ||' , '||
127 CASE WHEN sguf_tab(i).PARTYMONEYCNYX  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYCNYX=0 THEN '0' ELSE   '-'||sguf_tab(i).PARTYMONEYCNYX END                              ||' , '||
128 CASE WHEN sguf_tab(i).PARTYMONEYUSDX  IS NULL THEN 'NULL' WHEN sguf_tab(i).PARTYMONEYUSDX=0 THEN '0'  ELSE   '-'||sguf_tab(i).PARTYMONEYUSDX END                             ||' , '||
129 CASE WHEN sguf_tab(i).PERCENTX   IS NULL THEN 'NULL' ELSE sguf_tab(i).PERCENTX||'' END                                     ||' , '||
130 'NULL'                                                        ||' , '||
131 'NULL'                                                        ||' , '||
132 chr(39)||sguf_tab(i).REM||chr(39)                           ||' , '||
133 chr(39)||sguf_tab(i).BONDGP||chr(39)                        ||' , '||
134 chr(39)||sguf_tab(i).TAXRATE||chr(39)                       ||' , '||
135 chr(39)||sguf_tab(i).TAXWAY||chr(39)                        ||' , '||
136 CASE WHEN sguf_tab(i).TAXPRICE    = 0 THEN '0' ELSE   '-'||sguf_tab(i).TAXPRICE   END                               ||' , '||
137 CASE WHEN sguf_tab(i).TAXPRICECNY   =0 THEN '0' ELSE   '-'||sguf_tab(i).TAXPRICECNY  END                               ||' , '||
138 CASE WHEN sguf_tab(i).TAXPRICEUSD   =0 THEN '0' ELSE   '-'||sguf_tab(i).TAXPRICEUSD  END                               ||' , '||
139 CASE WHEN sguf_tab(i).COMPANYFEEPRICE   =0 THEN '0' ELSE   '-'||sguf_tab(i).COMPANYFEEPRICE END                             ||' , '||
140 CASE WHEN sguf_tab(i).COMPANYFEEPRICECNY   =0 THEN '0' ELSE   '-'||sguf_tab(i).COMPANYFEEPRICECNY END                          ||' , '||
141 CASE WHEN sguf_tab(i).COMPANYFEEPRICEUSD  =0  THEN '0' ELSE   '-'||sguf_tab(i).COMPANYFEEPRICEUSD END  
142  ||') ;' ;
143 
144 
145 
146 END LOOP;
147  END IF ;
148  INSERT INTO SGUF_SUM_UNEQUAL_MEMBERFREE(NO,Strsql) VALUES ('BSD20170908000830',v_insert_sql);
149 --dbms_output.put_line(v_insert_sql);
150 END ;
View Code

 

2.该脚本为sguf与mian表的数据核对脚本:

 1 SELECT 
 2 sguf.sgufmaxid,
 3 MAINtab.no,
 4 MAINtab.ma_memberid,
 5 MAINtab.BSFLAG,
 6 MAINtab.maFEEPRICE,
 7 sguf.sguffeeprice,
 8 (MAINtab.maFEEPRICE-abs(sguf.sguffeeprice)) AS balanceFreePrice,
 9 MAINtab.maFEEPRICEcny,
10 sguf.sguffeepricecny,
11 (MAINtab.maFEEPRICEcny-abs(sguf.sguffeepricecny)) AS balanceFreePricecny,
12 MAINtab.maFEEPRICEusd,
13 sguf.sguffeepriceusd,
14 (MAINtab.maFEEPRICEusd-abs(sguf.sguffeepriceusd)) AS balanceFreePricecusd
15 FROM (
16 SELECT M.NO, 'B' AS BSFLAG, m.buyerid AS ma_memberid ,
17         M.BUYERFEEPRICE maFEEPRICE ,M.BUYERFEEPRICEcny maFEEPRICEcny ,M.BUYERFEEPRICEusd  maFEEPRICEusd
18             
19  FROM HIS_PRODUCT_DEAL_MAIN M
20  WHERE M.STATE = 9
21  --  AND M.BUYERID = 1216
22  --  AND M.PRODUCTID = 4 
23    AND TO_CHAR(M.CREATETIME, 'yyyymmdd') BETWEEN '20171001' AND '20171031'
24 UNION ALL
25 SELECT M.NO, 'L' AS BSFLAG,m.sellerid AS ma_memberid,
26 M.sellerFEEPRICE maFEEPRICE ,M.sellerFEEPRICEcny maFEEPRICEcny ,M.sellerFEEPRICEusd  maFEEPRICEusd
27   FROM HIS_PRODUCT_DEAL_MAIN M
28  WHERE M.STATE = 9
29   -- AND M.SELLERID = 1216
30  --  AND M.PRODUCTID = 4  
31 AND  TO_CHAR(M.CREATETIME, 'yyyymmdd') BETWEEN '20171001' AND '20171031'   ) MAINtab ,
32       (
33 SELECT MAX(ID) AS sgufmaxid, s.no ,s.side,s.memberid,COUNT(s.no) nocount,
34 SUM(s.memberfeeprice) sguffeeprice,
35 SUM(s.memberfeepricecny) sguffeepricecny,
36 SUM(s.memberfeepriceusd) sguffeepriceusd
37  FROM SGUF_PRODUCT_DEAL_MAIN S
38  /* WHERE S.MEMBERID = 1216    AND to_char(s.dealdate,'yyyymmdd')  BETWEEN '20171001' AND     '20171031'*/
39   GROUP BY s.no,s.side ,s.memberid )  sguf
40     WHERE MAINtab.no=sguf.no(+) AND 
41      MAINtab.bsflag=sguf.side(+) AND 
42      MAINtab.ma_memberid=sguf.memberid(+) AND (
43      (MAINtab.maFEEPRICE-abs(sguf.sguffeeprice))<>0 OR 
44      (MAINtab.maFEEPRICEcny-abs(sguf.sguffeepricecny))<>0 OR
45      (MAINtab.maFEEPRICEusd-abs(sguf.sguffeepriceusd))<>0 )
View Code

3.该脚本为修改sguf表中分摊错误的数据

  1 DECLARE 
  2 max_indexvalue INT ;
  3 TYPE typ_rowid_table IS TABLE OF VARCHAR2(100) ;
  4 TYPE TYP_percent_TABLE IS TABLE OF NUMBER ;
  5 TYPE TYP_IndexValue_TABLE IS TABLE OF integer ;
  6 TYPE typ_percent_recode IS record (
  7 v_srNO Varchar2(100),
  8 v_memberfeeprice  number ,
  9 v_memberfeepricecny  number ,
 10 v_memberfeepriceusd  number ,
 11 v_sum_freeprice number ,
 12 v_sum_freepricecny number ,
 13 v_sum_freepriceusd number ,
 14 v_percent1  number ,
 15 v_percent2  number ,
 16 v_percent3  number ,
 17 v_percent4  number ,
 18 v_percent5  number ,
 19 v_percent6  number ,
 20 v_percent7  number ,
 21 v_percent8  number ,
 22 v_percent9  number ,
 23 v_percent10  number 
 24 );
 25 CURSOR sguf_cur IS SELECT sr.row_id FROM sguf_rowid_tab_1  sr /*WHERE sr.row_id='AAA+awAAFAABHs3AAC'*/ ;
 26 --v_rowid VARCHAR2(100) ;
 27 calc_freeprice_sum  NUMBER;
 28 calc_freepricecny_sum  NUMBER;
 29 calc_freepriceusd_sum  NUMBER;
 30 tab_rowid typ_rowid_table ;
 31 REC_PR  typ_percent_recode ;
 32 TAB_INDEX  TYP_IndexValue_TABLE :=  TYP_IndexValue_TABLE(NULL);
 33 TAB_PT        TYP_percent_TABLE := TYP_percent_TABLE(NULL);
 34 v_balance NUMBER  ;
 35 v_balancecny NUMBER ;
 36 v_balanceusd NUMBER ;
 37 str_Fentan_sql VARCHAR2(1000);
 38 Str_sql_Update VARCHAR2(1000);
 39 all_sql VARCHAR2(4000);
 40 
 41 
 42 BEGIN 
 43 
 44 OPEN sguf_cur ;
 45 LOOP 
 46 FETCH sguf_cur BULK COLLECT  INTO tab_rowid ;
 47 EXIT WHEN sguf_cur%NOTFOUND ;
 48 END LOOP ;
 49 
 50 FOR x IN tab_rowid.first .. tab_rowid.last LOOP 
 51 str_Fentan_sql :='';
 52 Str_sql_Update := '';
 53 max_indexvalue :=0 ;
 54 all_sql :='';
 55 v_balance :=0 ;
 56 v_balancecny :=0 ;
 57 v_balanceusd :=0 ;
 58 calc_freeprice_sum :=0 ;
 59 calc_freepricecny_sum :=0 ;
 60 calc_freepriceusd_sum :=0 ;
 61 SELECT S.NO,
 62 S.MEMBERFEEPRICE,
 63 S.MEMBERFEEPRICECNY,
 64 S.MEMBERFEEPRICEUSD,
 65 ABS(NVL(S.PARTYMONEY1, 0) + NVL(S.PARTYMONEY2, 0) +
 66 NVL(S.PARTYMONEY3, 0) + NVL(S.PARTYMONEY4, 0) +
 67 NVL(S.PARTYMONEY5, 0) + NVL(S.PARTYMONEY6, 0) +
 68 NVL(S.PARTYMONEY7, 0) + NVL(S.PARTYMONEY8, 0) +
 69 NVL(S.PARTYMONEY9, 0) + NVL(S.PARTYMONEY10, 0)) AS SUM_FREEPRICE,
 70 ABS(NVL(S.PARTYMONEYCNY1, 0) + NVL(S.PARTYMONEYCNY2, 0) +
 71 NVL(S.PARTYMONEYCNY3, 0) + NVL(S.PARTYMONEYCNY4, 0) +
 72 NVL(S.PARTYMONEYCNY5, 0) + NVL(S.PARTYMONEYCNY6, 0) +
 73 NVL(S.PARTYMONEYCNY7, 0) + NVL(S.PARTYMONEYCNY8, 0) +
 74 NVL(S.PARTYMONEYCNY9, 0) + NVL(S.PARTYMONEYCNY10, 0)) AS SUM_FREEPRICECNY,
 75 ABS(NVL(S.PARTYMONEYUSD1, 0) + NVL(S.PARTYMONEYUSD2, 0) +
 76 NVL(S.PARTYMONEYUSD3, 0) + NVL(S.PARTYMONEYUSD4, 0) +
 77 NVL(S.PARTYMONEYUSD5, 0) + NVL(S.PARTYMONEYUSD6, 0) +
 78 NVL(S.PARTYMONEYUSD7, 0) + NVL(S.PARTYMONEYUSD8, 0) +
 79 NVL(S.PARTYMONEYUSD9, 0) + NVL(S.PARTYMONEYUSD10, 0)) AS SUM_FREEPRICEUSD,
 80 S.PERCENT1,
 81 S.PERCENT2,
 82 S.PERCENT3,
 83 S.PERCENT4,
 84 S.PERCENT5,
 85 S.PERCENT6,
 86 S.PERCENT7,
 87 S.PERCENT8,
 88 S.PERCENT9,
 89 S.PERCENT10
 90 INTO REC_PR
 91  FROM SGUF_ROWID_TAB_1 S
 92 WHERE  s.row_id =tab_rowid(x);
 93 --dbms_output.put_line(tab_rowid(x));
 94 
 95 ------得到总共拆分了几个经纪人,每个经纪人的拆分比例是多少-------------
 96 TAB_PT.delete ;
 97 TAB_PT.extend(10);
 98 TAB_PT(1) := REC_PR.v_percent1;
 99 TAB_PT(2) := REC_PR.v_percent2;
100 TAB_PT(3) := REC_PR.v_percent3;
101 TAB_PT(4) := REC_PR.v_percent4;
102 TAB_PT(5) := REC_PR.v_percent5;
103 TAB_PT(6) := REC_PR.v_percent6;
104 TAB_PT(7) := REC_PR.v_percent7;
105 TAB_PT(8) := REC_PR.v_percent8;
106 TAB_PT(9) := REC_PR.v_percent9;
107 TAB_PT(10) := REC_PR.v_percent10;
108 TAB_INDEX.delete ;
109 
110 FOR I IN TAB_PT.first .. TAB_PT.last LOOP
111  
112 IF TAB_PT(I) IS  NOT NULL THEN 
113 TAB_INDEX.extend(1);
114 TAB_INDEX(TAB_INDEX.last) :=i ;
115 calc_freeprice_sum :=calc_freeprice_sum+ round(abs(REC_PR.v_memberfeeprice) * TAB_PT(i)/100 ,2) ;
116 calc_freepricecny_sum := calc_freepricecny_sum+ round(abs(REC_PR.v_memberfeepricecny) * TAB_PT(i)/100 ,2);
117 calc_freepriceusd_sum := calc_freepriceusd_sum+ round(abs(REC_PR.v_memberfeepriceusd) * TAB_PT(i)/100 ,2);
118 END IF ;
119 END LOOP ;
120 dbms_output.put_line('calc_freeprice_sum='||calc_freeprice_sum);
121 dbms_output.put_line('calc_freepricecny_sum='||calc_freepricecny_sum);
122 dbms_output.put_line('calc_freepriceusd_sum='||calc_freepriceusd_sum);
123 dbms_output.put_line('---------------------------------------------------------------------------');
124 v_balance := abs(REC_PR.v_memberfeeprice) - calc_freeprice_sum ;
125 v_balancecny := abs(REC_PR.v_memberfeepricecny) - calc_freepricecny_sum ;
126 v_balanceusd := abs(REC_PR.v_memberfeepriceusd) - calc_freepriceusd_sum ;
127 --max_indexvalue 拆了几个经纪人,最大经纪人编号;
128 max_indexvalue :=TAB_INDEX.last ;
129 IF REC_PR.v_sum_freeprice<>ABS(REC_PR.v_memberfeeprice)   THEN 
130 FOR i IN TAB_INDEX.first .. TAB_INDEX.last LOOP 
131 Str_sql_Update :='UPDATE sguf_rowid_tab_1 s1 '||
132 'SET s1.partymoney'||TAB_INDEX(i)||'='||ROUND(REC_PR.v_memberfeeprice *TAB_PT(TAB_INDEX(i))/100,2)||
133  ' WHERE s1.row_id ='||CHR(39)||tab_rowid(x)||CHR(39);
134 --EXECUTE IMMEDIATE Str_sql_Update ;
135 all_sql :=all_sql||Str_sql_Update||' ; '||CHR(10);
136 --dbms_output.put_line('all_sql='||all_sql );
137 END LOOP ;
138 --dbms_output.put_line('all_sql='||all_sql );
139 INSERT INTO SGUF_SUM_UNEQUAL_MEMBERFREE SU
140 VALUES
141   (TAB_ROWID(X),
142    REC_PR.V_SRNO,
143    ALL_SQL,
144    V_BALANCE,
145    REC_PR.V_MEMBERFEEPRICE,
146    calc_freeprice_sum,
147      REC_PR.V_MEMBERFEEPRICEcny,
148    calc_freepricecny_sum,
149      REC_PR.V_MEMBERFEEPRICEusd,
150    calc_freepriceusd_sum
151    );
152 all_sql :=' ';
153 END IF ;
154 
155 IF REC_PR.v_sum_freepricecny<>ABS(REC_PR.v_memberfeepricecny)   THEN 
156 FOR i IN TAB_INDEX.first .. TAB_INDEX.last LOOP 
157 Str_sql_Update :='
158 UPDATE sguf_rowid_tab_1 s1  set '||
159 's1.partymoneycny'||TAB_INDEX(i)||'='||round(REC_PR.v_memberfeepricecny *TAB_PT(TAB_INDEX(i))/100,2)||
160  ' WHERE s1.row_id ='||CHR(39)||tab_rowid(x)||CHR(39);
161 --EXECUTE IMMEDIATE Str_sql_Update ;
162 all_sql :=all_sql||Str_sql_Update||' ; '||CHR(10);
163 
164 END LOOP ;
165 INSERT INTO SGUF_SUM_UNEQUAL_MEMBERFREE SU
166 VALUES
167   (TAB_ROWID(X),
168    REC_PR.V_SRNO,
169    ALL_SQL,
170    V_BALANCE,
171    REC_PR.V_MEMBERFEEPRICE,
172    calc_freeprice_sum,
173      REC_PR.V_MEMBERFEEPRICEcny,
174    calc_freepricecny_sum,
175      REC_PR.V_MEMBERFEEPRICEusd,
176    calc_freepriceusd_sum
177    );
178      all_sql :=' ';
179 
180 END IF ;
181 
182 IF REC_PR.v_sum_freepriceusd<>ABS(REC_PR.v_memberfeepriceusd)   THEN 
183 
184 FOR i IN TAB_INDEX.first .. TAB_INDEX.last LOOP 
185 Str_sql_Update :='
186 UPDATE sguf_rowid_tab_1 s1  set '||
187 's1.partymoneyusd'||TAB_INDEX(i)||'='||round(REC_PR.v_memberfeepriceusd *TAB_PT(TAB_INDEX(i))/100,2)||
188  ' WHERE s1.row_id ='||CHR(39)||tab_rowid(x)||CHR(39);
189 --EXECUTE IMMEDIATE Str_sql_Update ;
190 all_sql :=all_sql||Str_sql_Update||' ; '||CHR(10);
191 --dbms_output.put_line('all_sql='||all_sql );
192 END LOOP ;
193 INSERT INTO SGUF_SUM_UNEQUAL_MEMBERFREE SU
194 VALUES
195   (TAB_ROWID(X),
196    REC_PR.V_SRNO,
197    ALL_SQL,
198    V_BALANCE,
199    REC_PR.V_MEMBERFEEPRICE,
200    calc_freeprice_sum,
201      REC_PR.V_MEMBERFEEPRICEcny,
202    calc_freepricecny_sum,
203      REC_PR.V_MEMBERFEEPRICEusd,
204    calc_freepriceusd_sum
205    );all_sql :=' ';
206 END IF ;
207 COMMIT ;
208 END LOOP ;
209 END ;
View Code

 

posted @ 2017-11-17 14:47  linbo.yang  阅读(302)  评论(0编辑  收藏  举报