create or replace function spell_money
(
p_number in number
)
return varchar2 as type myArray
is
table of varchar2(255);
l_str myArray := myArray( ' Thousand ', ' Lakh ', ' Crore ', ' Arab ', ' Kharab ', ' Shankh ' );
l_num varchar2(50) default trunc( p_number );
l_return varchar2(4000);
begin
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' );
end if;
l_num := substr( l_num, 1, length(l_num)-3 );
for i in 1 .. l_str.count
loop
exit when l_num is null;
if ( substr(l_num, length(l_num)-1, 2) <> 0 ) then
l_return := to_char( to_date( substr(l_num, length(l_num)-1, 2), 'J' ), 'Jsp' ) || l_str(i) || l_return;
end if;
l_num := substr( l_num, 1, length(l_num)-2 );
end loop;
if to_char( p_number ) like '%.%' then
l_num := rpad (substr (round (p_number, 2), instr (p_number, '.' ) + 1), 2, '0');
if l_num > 0 then
l_return := l_return || ' And ' || to_char( to_date( l_num, 'J' ), 'Jsp' ) || ' Paise';
end if;
end if;
return l_return;
end spell_money;
/