金額大小寫轉換(3)

weixin_34262482發表於2010-12-31
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;


相關文章