create or replace function tcos_spell_number( p_number in number ) return varchar2 -- CopyRight Toshiba Shenzhen Han Fangquan 2002.04.10 as type myArray is table of varchar2(255);
l_str myArray := myArray( '', ' Thousand ', ' Million ', ' Billion ', ' Trillion ', ' Quadrillion ', ' Quintillion ', ' Sextillion ', ' Septillion ', ' Octillion ', ' Nonillion ', ' Decillion ', ' Undecillion ', ' Duodecillion ' ); l_num varchar2(50) default trunc( p_number ); h_number number; l_return varchar2(4000); begin h_number := round(p_number*100)/100; for i in 1 .. l_str.count loop exit when l_num is null; if ( substr(l_num, length(l_num)-2, 3) <> 0 ) then l_return := to_char( to_date( substr(l_num, length(l_num)-2, 3), 'J' ), 'jsp' ) l_str(i) l_return; end if; l_num := substr( l_num, 1, length(l_num)-3 ); end loop; -- add Dollars string. Han Fangquan -- Han Fangquan modified begin if l_return is null then l_return := 'Zero' ; end if; -- p_number >1 then add Dollars else Add Dollar. if trunc( h_number )>1 then l_return := l_return ' Dollars '; else l_return := l_return ' Dollar '; end if; if to_char( h_number ) like '%.%' then l_num := substr(h_number,instr(h_number,'.')+1); if length(l_num)=1 then l_num := l_num '0'; end if; if l_num > 0 then if l_num > 1 then l_return := l_return 'And 'l_num' Cents '; else l_return := l_return 'And 'l_num' Cent '; end if; end if; end if; -- end (Han Fangquan modified ) /* -- beginning of section added to include decimal places: if to_char( h_number ) like '%.%' then l_num := substr( h_number, instr( h_number, '.' )+1 ); if l_num > 0 then l_return := l_return ' point'; for i in 1 .. length (l_num) loop exit when l_num is null; if substr( l_num, 1, 1 ) = '0' then l_return := l_return ' zero'; else l_return := l_return ' ' to_char( to_date( substr( l_num, 1, 1), 'j' ), 'jsp' ); end if; l_num := substr( l_num, 2 ); end loop; end if; end if; */ -- end of section added to include decimal places -- Han if the length fo l_trun less than 100 ,i will add ** -- if length(l_return) < 100 -- then -- l_return := l_return -- substr('****************************************************************************************************', -- length(l_return)-1) ;
-- end if; l_return := l_return'*************'; return l_return; end tcos_spell_number;
|