Oracle 人民币小写转大写

Oracle 人民币小写转大写,第1张

概述Oracle 人民币小写转大写

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

CREATE OR REPLACE FUNCTION PARSE_FEE_CHInesE(N_FEE IN NUMBER)  RETURN VARCHAR2 AS  V_CHInesE_NUMBER VARCHAR2(30) := '零壹贰叁肆伍陆柒捌玖';  V_CHInesE_POINT  VARCHAR2(30) := '分角元拾佰仟万亿';  V_RESulT         VARCHAR2(100) := '';  V_TEMP           VARCHAR2(100);  V_FLAG           VARCHAR2(10);  V_MAIN           VARCHAR2(40);  V_SUB            VARCHAR2(20);  N_TEMPFEE        NUMBER(30,2);  C_CH1            CHAR(1);  C_CH2            VARCHAR2(10);  N_LENGTH         NUMBER(10) := 0;  I                NUMBER(10) := 0;  J                NUMBER(10) := 0;  T                NUMBER(10) := 0;BEGIN  IF N_FEE < 0 THEN    V_FLAG    := '负';    N_TEMPFEE := -1 * N_FEE;  ELSE    N_TEMPFEE := N_FEE;    V_FLAG    := '';  END IF;  SELECT TRIM(TO_CHAR(ROUND(N_TEMPFEE,2),'9999999999999999999.99'))    INTO V_TEMP    FROM DUAL;  IF N_FEE = 0 THEN    V_RESulT := '零元整';  ELSE    --先处理整数,再处理小数    V_MAIN := SUBSTR(V_TEMP,1,INSTR(V_TEMP,'.') - 1);    V_SUB  := SUBSTR(V_TEMP,'.') + 1);    N_LENGTH := LENGTH(V_MAIN);    I        := N_LENGTH;    T        := 0;    IF V_MAIN IS NulL OR '0' = V_MAIN THEN      V_RESulT := '零' || V_RESulT;    END IF;    WHILE I > 0 LOOP      I      := I - 1;      T      := T + 1;      C_CH1  := SUBSTR(V_MAIN,I + 1);      V_MAIN := SUBSTR(V_MAIN,I);      J      := TO_NUMBER(C_CH1);      IF T = 5 OR t= 13 THEN        V_RESulT := '万' || V_RESulT;      ELSIF T = 9 THEN        IF '万' = SUBSTR(V_RESulT,1) THEN          V_RESulT := '亿' || SUBSTR(V_RESulT,2);        ELSE          V_RESulT := '亿' || V_RESulT;        END IF;      END IF;      IF '0' = C_CH1 THEN        IF I <> N_LENGTH AND '零' <> C_CH2 THEN          IF T <> 5 AND T <> 9 AND T <> 13 THEN            V_RESulT := '零' || V_RESulT;          ELSIF T = 5 OR T = 9 OR t=13 THEN            V_RESulT := SUBSTR(V_RESulT,1) || '零' ||                        SUBSTR(V_RESulT,2);          END IF;          C_CH2 := SUBSTR(V_CHInesE_NUMBER,J,1);        END IF;      ELSE        J := MOD(T,4);        IF T <> 5 AND T <> 9 AND T <> 13 THEN          IF J <> 1 THEN            IF J = 0 THEN              J := J + 4;            END IF;            J        := J + 2;            V_RESulT := SUBSTR(V_CHInesE_POINT,1) || V_RESulT;          END IF;        END IF;        J        := TO_NUMBER(C_CH1) + 1;        C_CH2    := SUBSTR(V_CHInesE_NUMBER,1);        V_RESulT := C_CH2 || V_RESulT;      END IF;    END LOOP;    V_RESulT := V_RESulT || '元';    IF V_SUB IS NulL OR LENGTH(TRIM(V_SUB)) <= 0 OR TO_NUMBER(V_SUB) = 0 THEN      V_RESulT := V_RESulT || '整';    ELSE      C_CH1    := SUBSTR(V_SUB,1);      J        := TO_NUMBER(C_CH1) + 1;      C_CH2    := SUBSTR(V_CHInesE_NUMBER,1);      IF '0' = C_CH1 THEN              V_RESulT := V_RESulT || C_CH2 ;      ELSE      V_RESulT := V_RESulT || C_CH2 || '角';      END IF;      C_CH1 := SUBSTR(V_SUB,2,1);      IF '0' <> C_CH1 THEN        J        := TO_NUMBER(C_CH1) + 1;        C_CH2    := SUBSTR(V_CHInesE_NUMBER,1);        V_RESulT := V_RESulT || C_CH2 || '分';      END IF;    END IF;  END IF;  V_RESulT := V_FLAG || V_RESulT;  RETURN V_RESulT;END;

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的Oracle 人民币小写转大写全部内容,希望文章能够帮你解决Oracle 人民币小写转大写所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1164616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存