dwd_cmbc实现

如题所示,本文dwd_cmbc实现,但是大量的代码

交易日期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR1 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR1 VARCHAR2 ( 128 );--存储变量
OUT_DEFSTR1 DATE;--结果变量
BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR1;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

OUT_DEFSTR1:=TO_DATE(IN_DEFSTR1,'YYYY-MM-DD');
DBMS_OUTPUT.put_line(OUT_DEFSTR1);
END LOOP;
CLOSE C_ABC;
END;

交易时间

余额

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR4 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR3 VARCHAR2( 128 );--存储变量
OUT_DEFSTR3 NUMBER(12,2);--结果变量
BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR3;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

OUT_DEFSTR3:= TO_NUMBER(REPLACE(IN_DEFSTR3,',',''));
DBMS_OUTPUT.put_line(OUT_DEFSTR3);
END LOOP;
CLOSE C_ABC;
END;

交易金额

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR3 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR4 VARCHAR2( 128 );--存储变量
OUT_DEFSTR4 NUMBER(12,2);--结果变量
BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR4;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

OUT_DEFSTR4:= ABS(TO_NUMBER(REPLACE(IN_DEFSTR4,',','')));
DBMS_OUTPUT.put_line(OUT_DEFSTR4);
END LOOP;
CLOSE C_ABC;
END;

收支方向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR3 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR5 VARCHAR2( 128 );--存储变量
OUT_DEFSTR5 VARCHAR2( 128 );--结果变量
BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR5;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;
IF SUBSTR(IN_DEFSTR5,1,1)='-' THEN
OUT_DEFSTR5:='支出';
ELSE
OUT_DEFSTR5:='收入';
END IF;
DBMS_OUTPUT.put_line(OUT_DEFSTR5);
END LOOP;
CLOSE C_ABC;
END;

币种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR3 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR6 VARCHAR2( 128 );--存储变量
OUT_DEFSTR6 VARCHAR2( 128 );--结果变量
BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR6;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

OUT_DEFSTR6:= 'CNY';
DBMS_OUTPUT.put_line(OUT_DEFSTR6);
END LOOP;
CLOSE C_ABC;
END;

交易本方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR3 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR7 VARCHAR2( 128 );--存储变量
OUT_DEFSTR7 VARCHAR2( 128 );--结果变量
BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR7;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

OUT_DEFSTR7:= 'CMBC';
DBMS_OUTPUT.put_line(OUT_DEFSTR7);
END LOOP;
CLOSE C_ABC;
END;

交易对方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR6 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR8 VARCHAR2(128);--存储变量
OUT_DEFSTR8 VARCHAR2(128);--结果变量

--过渡变量
S1 VARCHAR2(128);
S2 VARCHAR2(128);
BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR8;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

S1:=translate(IN_DEFSTR8,'a1234 567890""','#');--剔除数字
S2:=TRANSLATE(IN_DEFSTR8,', ""'||S1,'#');

CASE S2
WHEN '001980099990002' THEN OUT_DEFSTR8:='ABC';
WHEN '110934310110802' THEN OUT_DEFSTR8:='中国铁路网络有限公司';
WHEN '123912485010902' THEN OUT_DEFSTR8:= '重庆优服普创科技有限公司';
WHEN '484200016666666' THEN OUT_DEFSTR8:= 'TENCE';
WHEN '755913807510606' THEN OUT_DEFSTR8:= '联通话费';
WHEN '802301048140003' THEN OUT_DEFSTR8:= '联通话费';
WHEN '898500041114570' THEN OUT_DEFSTR8:= '重庆交通';
WHEN '898500041116161' THEN OUT_DEFSTR8:= '重庆交通';
WHEN '912352920611009110' THEN OUT_DEFSTR8:= '招行';
WHEN '912352920611009810' THEN OUT_DEFSTR8:= '招行';
ELSE OUT_DEFSTR8:= '未知';
END CASE;
DBMS_OUTPUT.put_line(OUT_DEFSTR8);
END LOOP;
CLOSE C_ABC;
END;

订单号

交易备注

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR6 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR10 VARCHAR2(128);--存储变量
OUT_DEFSTR10 VARCHAR2(128);--结果变量

BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR10;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

OUT_DEFSTR10:=translate(IN_DEFSTR10,'a1234 567890""','#');--剔除数字
DBMS_OUTPUT.put_line(OUT_DEFSTR10);
END LOOP;
CLOSE C_ABC;
END;

备注

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DECLARE 
CURSOR C_ABC IS SELECT DEFSTR6 FROM ODS_CMBC WHERE LENGTH(DEFSTR1)<>4;
IN_DEFSTR11 VARCHAR2(128);--存储变量
OUT_DEFSTR11 VARCHAR2(128);--结果变量

BEGIN
OPEN C_ABC;
LOOP
FETCH C_ABC INTO IN_DEFSTR11;--提取游标
IF C_ABC % NOTFOUND THEN
EXIT;
END IF;

OUT_DEFSTR11:=IN_DEFSTR11;
DBMS_OUTPUT.put_line(OUT_DEFSTR11);
END LOOP;
CLOSE C_ABC;
END;

暂定