DECLARE CURSOR C_ABC ISSELECT DEFSTR1 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; 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,'YYYYMMDD'); END LOOP; CLOSE C_ABC; END;
DECLARE CURSOR C_ABC ISSELECT DEFSTR2 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; IN_DEFSTR2 VARCHAR2( 128 );--存储变量 OUT_DEFSTR2 VARCHAR2( 128 );--结果变量 BEGIN OPEN C_ABC; LOOP FETCH C_ABC INTO IN_DEFSTR2;--提取游标 IF C_ABC % NOTFOUND THEN EXIT; END IF; CASE LENGTH(IN_DEFSTR2) WHEN6THEN OUT_DEFSTR2:=SUBSTR(IN_DEFSTR2, 1, 2) ||':'|| SUBSTR(IN_DEFSTR2, 3, 2) ||':'||SUBSTR(IN_DEFSTR2, 5, 2); WHEN5THEN OUT_DEFSTR2:='0'|| SUBSTR(IN_DEFSTR2, 1, 1) ||':'|| SUBSTR(IN_DEFSTR2, 2, 2) ||':'|| SUBSTR(IN_DEFSTR2, 4, 2); ELSE OUT_DEFSTR2:='00:00:00'; ENDCASE; 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 ISSELECT DEFSTR5 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; 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(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 ISSELECT DEFSTR4 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; 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(IN_DEFSTR4)); DBMS_OUTPUT.put_line(OUT_DEFSTR4); END LOOP; CLOSE C_ABC; END;
DECLARE CURSOR C_ABC ISSELECT DEFSTR4 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; 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 ISSELECT DEFSTR4 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; 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 ISSELECT DEFSTR4 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; 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:='ABC'; DBMS_OUTPUT.put_line(OUT_DEFSTR7); END LOOP; CLOSE C_ABC; END;
DECLARE CURSOR C_ABC ISSELECT DEFSTR8 FROM V_DWD_ABC WHERE DEFSTR1 LIKE'202201%'; DEFSTR8 VARCHAR2 ( 128 ); --过渡变量 S1 VARCHAR2 ( 128 ); S2 VARCHAR2 ( 128 ); N1 INTEGER; BEGIN OPEN C_ABC; LOOP FETCH C_ABC INTO DEFSTR8;--提取游标 IF C_ABC % NOTFOUND THEN EXIT; END IF; IF DEFSTR8 ISNOT NULLTHEN--判断要处理的字符是否为NULL DBMS_OUTPUT.put_line ( DEFSTR8 ); DEFSTR8 :=translate( DEFSTR8, '#'||translate( DEFSTR8, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', '#' ), '/' );--剔除汉字以及特殊字符 --DBMS_OUTPUT.put_line ( 'WCL:' || DEFSTR8 ); --交易附言除订单号外,可能还有数字或者字母,所以下面处理这部分问题 --计算长度 N1 := LENGTH( DEFSTR8 ); IF N1 <6THEN DEFSTR8 :='';--说明不是订单号 ELSIF N1 >18THEN --大于18就有可能有问题,但是前18位肯定没问题,所以先取出来 S1 := SUBSTR( DEFSTR8, 1, 18 ); --将可能有问题的部分拿出来进行处理 S2 := SUBSTR( DEFSTR8, 19, N1 ); S2 :=translate(S2, 'qwertyuiopasdfghjklzxcvbnmQAZXSWEDCVFRTGBNHYUJMKIOLP', '#' );--,因为后面部分不会有字母,去掉这些字符的字母 /*因为订单号只有18位或者33位两种,所以可以开始处理*/ N1 :=18+NVL ( LENGTH( S2 ), 0 ); --获取当前字符长度 IF( N1 <33 ) THEN DEFSTR8 := S1;--这是18位的订单 ELSE DEFSTR8 := S1 || SUBSTR( S2, 1, 15 );--这是33位的订单,只截取需要(15=33-18)的部分 END IF; --ELSE 大于6位小于19位认为正常,不处理 END IF; DBMS_OUTPUT.put_line (DEFSTR8 ); END IF; 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 DEFSTR8 FROM V_DWD_ABC WHERE DEFSTR1 LIKE '20221%'; 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,'ZXCVBNMASDFGHJKLQWERTYUIOP1234567890','/'); 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
DECLARE CURSOR C_ABC IS SELECT DEFSTR8 FROM V_DWD_ABC WHERE DEFSTR1 LIKE '20221%'; 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;