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 + 1, 1)); if i = 11 and substr(srmb, 1, 1) = '万' then srmb := case when substr(srmb, 2, 1) not 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 (3, 7, 11, 15) then 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;