金额大小写转换,最多支持5位整数,小数部份四舍五入

 原代码为网上转载而来,后经本人修改而成,主要适用于票据已印刷好"万仟佰拾元"单位的情况,如侵犯他人著作权,请通知本人删除,谢谢

 

CREATE OR REPLACE FUNCTION money_trans( s_money NUMBER ) RETURN VARCHAR2
IS
c_money varchar2(12);                                  

n_string varchar2(20) := '壹贰叁肆伍陆柒捌玖';         

b_string varchar2(80);
n char;                                                

len number(3);                                         

i number(3);                                         

tmp number(12);
is_zero BOOLEAN;                                        

z_count number(3);
BEGIN                                                   

tmp := ROUND(s_money) ;                                 

c_money := RTRIM(LTRIM(TO_CHAR(tmp, '999999999999')));  

len := LENGTH(c_money);                                 

IF len > 5 THEN
  RETURN '超出范围';
END IF;
is_zero := TRUE;
z_count := 0;
i := 0;                                                 
WHILE i < len LOOP
  i := i + 1;
  n := substr(c_money,i,1);
  IF n = '0' THEN
   IF len-i=4 OR len-i=3 OR len-i=2 OR len-i=1 OR len=i THEN
    IF is_zero THEN
     b_string := SUBSTR(b_string,1,LENGTH(b_string)-1);
     is_zero := FALSE;
    END IF;
    IF len-i=4 THEN
     b_string := b_string || '零';
    END IF;
    IF len-i=3 THEN
     b_string := b_string || '零';--圆
    END IF;
    IF len-i=2 THEN
     b_string := b_string || '零';--圆
    END IF;
    IF len-i=1 THEN
     b_string := b_string || '零';--圆
    END IF;
    IF len = i THEN
     b_string := b_string || '零';--整
    END IF;
    z_count := 0;
   ELSE
    IF z_count = 0 THEN
     b_string := b_string || '零';
     is_zero := TRUE;
    END IF;
    z_count := z_count + 1;
   END IF;
  ELSE
   b_string := b_string || substr(n_string,TO_NUMBER(n),1);
   z_count := 0;
   is_zero := FALSE;
  END IF;
END LOOP;
RETURN SUBSTR(b_string,1,15);
END money_trans;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值