create or replace function func_replace(p1 in number,p4 in number)
return varchar2 is
--定义变量,v_number,v_daxie,v_jine
v_number number;
v_daxie varchar2(40);
v_jine varchar2(40);
p2 varchar2(40);
--执行
begin
--把p1的值付给v_number
v_number:=p1;
--把v_number输入的数转化为汉字大写
v_daxie:=replace(replace(replace(replace(replace(replace
(replace(replace(replace(replace(v_number,'1','壹'),'2','贰'),'3','叁'),'4','肆'),'5','伍'),
'6','陆'),'7','柒'),'8','捌'),'9','玖'),'0','零');
--大写转化为大写金额;
if v_number<10 then
  v_jine:=v_daxie||'元整';
  elsif v_number=10 then
  v_jine:=substr(v_daxie,1,1)||'拾元整';
  elsif v_number<100 and v_number>10 then
  v_jine:=substr(v_daxie,1,1)||'拾'||substr(v_daxie,2,1)||'元整';
  elsif v_number=100 then
  v_jine:=substr(v_daxie,1,1)||'佰元整';
  elsif v_number<1000 and v_number>100 then
   v_jine:=substr(v_daxie,1,1)||'佰'||substr(v_daxie,2,1)||'拾'||substr(v_daxie,3,1)||'元整';
   elsif v_number=1000 then
   v_jine:=substr(v_daxie,1,1)||'仟元整';
  elsif v_number<10000 and v_number>1000 then
   v_jine:=substr(v_daxie,1,1)||'仟'||substr(v_daxie,2,1)||'佰'||substr(v_daxie,3,1)||'拾'||substr(v_daxie,4,1)||'元整';
   elsif v_number=10000 then
   v_jine:=substr(v_daxie,1,1)||'萬元整';
   elsif v_number<100000 and v_number>10000 then
   v_jine:=substr(v_daxie,1,1)||'万'||substr(v_daxie,2,1)||'仟'||substr(v_daxie,3,1)||
   '佰'||substr(v_daxie,4,1)||'拾'||substr(v_daxie,5,1)||'元整';
   elsif v_number=100000 then
   v_jine:=substr(v_daxie,1,1)||'拾萬元整';
   elsif v_number<1000000 and v_number>100000 then
   v_jine:=substr(v_daxie,2,1)||'拾万'||substr(v_daxie,2,1)||'万'||substr(v_daxie,3,1)||'仟'||substr(v_daxie,4,1)||
   '佰'||substr(v_daxie,5,1)||'拾'||substr(v_daxie,6,1)||'元整';
   elsif v_number=1000000 then
   v_jine:=substr(v_daxie,1,1)||'佰萬元整';
   elsif v_number<10000000 and v_number>1000000 then
   v_jine:=substr(v_daxie,1,1)||'佰万'||substr(v_daxie,2,1)||'拾万'||substr(v_daxie,3,1)||'万'||substr(v_daxie,4,1)||'仟'||substr(v_daxie,5,1)||
   '佰'||substr(v_daxie,6,1)||'拾'||substr(v_daxie,7,1)||'元整';
   elsif v_number=10000000 then
   v_jine:=substr(v_daxie,1,1)||'仟萬元整';
   elsif v_number<100000000 and v_number>10000000 then
   v_jine:=substr(v_daxie,1,1)||'仟万'||substr(v_daxie,2,1)||'佰万'||substr(v_daxie,3,1)||'拾万'||substr(v_daxie,4,1)||'万'||substr(v_daxie,5,1)||'仟'||substr(v_daxie,6,1)||
   '佰'||substr(v_daxie,7,1)||'拾'||substr(v_daxie,8,1)||'元整';
   end if;
  --判断p4的值
case
  when p4=1 then p2:=v_daxie;
  when p4=2 then p2:=v_jine;
  end case;
 return p2;
 end ;