金额大小写转换(3)

declare
    je    
number := 1000000000100000.01;
    snum  
varchar2(30) := to_char(round(abs(je * 100)));
    
len   pls_integer := length(snum);
    sch   
varchar2(30) := '壹贰叁肆伍陆柒捌玖';
    sjin  
varchar2(80) := '分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟';
    srmb  
varchar2(100) := '';
    num   pls_integer;
    flage boolean :
= true;
begin
    
for i in 1 .. len
    loop
        num :
= to_number(substr(snum, len - i + 11));
        
if i = 11 and substr(srmb, 11= '' then
            srmb :
= case when substr(srmb, 21not in (''''then '' end || substr(srmb, 2);
        
end if;
        
if num > 0 then
            srmb  :
= substr(sch, num, 1|| substr(sjin, i, 1|| srmb;
            flage :
= true;
        elsif i 
in (371115then
            srmb  :
= substr(sjin, i, 1|| srmb;
            flage :
= false;
        elsif flage 
then
            srmb  :
= case when i = 1 then '' else '' || srmb end;
            flage :
= false;
        
end if;
    
end loop;
    
if je < 0 then
        srmb :
= '' || srmb;
    
end if;
    dbms_output.put_line(srmb);
end;


         

            成长

       /      |     \

    学习   总结   分享

QQ交流群:122230156

原文地址:https://www.cnblogs.com/benio/p/1923251.html