最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle人民币小写转大写

来源:动视网 责编:小采 时间:2020-11-09 16:12:13
文档

Oracle人民币小写转大写

Oracle人民币小写转大写:练手用用,写得很复杂 无 CREATE OR REPLACE FUNCTION PARSE_FEE_CHINESE(N_FEE IN NUMBER) RETURN VARCHAR2 AS V_CHINESE_NUMBER VARCHAR2(30) := '零壹贰叁肆伍陆柒捌玖'; V_CHINESE_POINT VARCHAR2(30) := '
推荐度:
导读Oracle人民币小写转大写:练手用用,写得很复杂 无 CREATE OR REPLACE FUNCTION PARSE_FEE_CHINESE(N_FEE IN NUMBER) RETURN VARCHAR2 AS V_CHINESE_NUMBER VARCHAR2(30) := '零壹贰叁肆伍陆柒捌玖'; V_CHINESE_POINT VARCHAR2(30) := '


练手用用,写得很复杂 无 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) :=

练手用用,写得很复杂 <无> $velocityCount-->
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, INSTR(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, 1, 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, 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, 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, J, 1) || V_RESULT;
 END IF;
 END IF;
 J := TO_NUMBER(C_CH1) + 1;
 C_CH2 := SUBSTR(V_CHINESE_NUMBER, J, 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, 1);
 J := TO_NUMBER(C_CH1) + 1;
 C_CH2 := SUBSTR(V_CHINESE_NUMBER, J, 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, J, 1);
 V_RESULT := V_RESULT || C_CH2 || '分';
 END IF;
 END IF;
 END IF;
 V_RESULT := V_FLAG || V_RESULT;
 RETURN V_RESULT;
END;

文档

Oracle人民币小写转大写

Oracle人民币小写转大写:练手用用,写得很复杂 无 CREATE OR REPLACE FUNCTION PARSE_FEE_CHINESE(N_FEE IN NUMBER) RETURN VARCHAR2 AS V_CHINESE_NUMBER VARCHAR2(30) := '零壹贰叁肆伍陆柒捌玖'; V_CHINESE_POINT VARCHAR2(30) := '
推荐度:
标签: 转换 小写 用用
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top