日期:2014-05-17 浏览次数:20973 次
create or replace function num2rmb(je number) return varchar2 is
result varchar2(100);
i pls_integer;
snum varchar2(20) := ltrim(replace(to_char(abs(je),
'9999999999999990.99'),
'.'));
len pls_integer := length(snum);
sch varchar2(20) := '零壹贰叄肆伍陆柒捌玖';
sjin varchar2(50) := '分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟';
srmb varchar2(100) := '';
num Pls_Integer;
jin varchar(2);
s_num pls_integer := 0; --0起始位置
e_num pls_integer := 0; --0结束位置
begin
for i in 1 .. len loop
num := to_number(substr(snum, i, 1));
if num <> 0 then
--非‘0’时处理
if s_num = 0 then
srmb := srmb || substr(sch, num + 1, 1) ||
substr(sjin, len - i + 1, 1);
--前面字符非0时,正常连接。。。
else
srmb := srmb || --否则
case
when s_num = e_num then --前面只有一个0
case s_num
when 7 then
'万' --只处理进位
when 11 then
'亿'
when 15 then
'万'
end
when e_num <