1create
orreplace
function num2rmb(pi_money nvarchar2) return nvarchar2 is2--
purpose :返回人民幣大寫方式
3 v_num number
;4 i number
;5 j number
;6 k number
;7 l number
;8 fs1 nvarchar2(500
);9 fs2 nvarchar2(500
);10 fs3 nvarchar2(500
);11 s nvarchar2(500
);12 s1 nvarchar2(500
);13 s2 nvarchar2(500
);14 zero number
;15 pos number
;16 h number
;17 t number(5,4
);18 v_money number;19
begin
20 v_money :=
round(pi_money,2
);21
if nvl(v_money,0)=022
or instr(v_money,'
.')>=
18then
23return'無
';24endif;
25 zero :=0;
26 pos :=0;
27 fs1 :=
'零壹貳叄肆伍陸柒捌玖';
28 fs2 :=
'仟佰拾萬仟佰拾元';
29 fs3 :=
'仟佰拾萬仟佰拾億';
30 h := trunc(v_money);--
-整數部分
31 t := v_money - h;--
-小數部分
32if t =
0then
33--
-形成字串
34 s := lpad(to_char(h),16,'
0')||
'.0000';
35else
36 s := lpad(to_char(h),16,'
0')|| rpad(to_char(t),5,'0'
);37
endif
;38 s1 := substr(s,1,8)||'.
';39--
整理億位數字
40for i in
1..8
loop
41if i >= pos then
42--
-else skip 0
43 l := to_number(substr(s1, i,1
));44
if l >
0then
45--
add fs1 and fs2 char
46 s2 := s2 || substr(fs1, l +
1,1)|| substr(fs3, i,1
);47 zero :=
1;--
有整數48
else
49if i =
4then
50 s2 := s2 ||'萬
';51end
if;--
-插入萬字,因為從此出分隔一次迴圈
52 pos := i +1;
53for j in i +
1..9
loop
54if j =455
and substr(s1, j,1)='0
'56and s2 is
notnull
57and zero =
1then
58 s2 := s2 ||'萬
';59endif;
60if substr(s1, j,1)='0
'then
61 pos := pos +1;
62endif;
63exit
when substr(s1, j,1)!='0
';--
pos >=9;
64end
loop;
65if pos =966
and substr(s1,1,8)>=
1then
67 s2 := s2 ||'億
';--
無個億位,直接加億
68else
69if zero =
1then
70 s2 := s2 ||'零
';71end
if;--
不到個億位,補中間零 eg 10101
72endif;
73endif;
74endif;
75end
loop;
76 zero :=0;
77 pos :=0;
78--
整理億位之後的資料
79 s1 := substr(s,9
);80
for i in
1..8
loop
81if i =182
and to_number(substr(s1, i,1))=083
and s2 is
notnull
then
84 s2 := s2 ||'零
';85endif;
86if i >= pos then
87--
-else skip 0
88 l := to_number(substr(s1, i,1
));89
if l >
0then
90--
add fs1 and fs2 char
91 s2 := s2 || substr(fs1, l +
1,1)|| substr(fs2, i,1
);92 zero :=
1;--
有整數93
else
94if i =
4then
95 s2 := s2 ||'萬
';96end
if;--
-插入萬字,因為從此出分隔一次迴圈
97 pos := i +1;
98for j in i +
1..9
loop
99if j =
4100
and substr(s1, j,1)='0
'101
and s2 is
notnull
102and zero =
1then
103 s2 := s2 ||'萬
';104endif;
105if substr(s1, j,1)='0
'then
106 pos := pos +1;
107endif;
108exit
when substr(s1, j,1)!='0
';109end
loop;
110if pos =
9111
and v_money >=
1then
112 s2 := s2 ||'元
';--
無個位,直接加元
113else
114if zero =
1then
115 s2 := s2 ||'零
';116end
if;--
不到個位,補中間零 eg 10101.00
117endif;
118endif;
119endif;
120end
loop;
121if substr(s1,10,4)=
'0000
'then
122 s2 := s2 ||'整
';123else
124 l := to_number(substr(s1,10,1
));125
if l >
0then
126 s2 := s2 || substr(fs1, l *1+
1,1)||'角
';127else
128if v_money >
0.1then
129 s2 := s2 ||'零
';130end
if;--
去掉0.01的前導零
131endif;
132 l := to_number(substr(s1,11,1
));133
if l >
0then
134 s2 := s2 || substr(fs1, l *1+
1,1)||'分
';135endif;
136endif;
137return
s2;138
end num2rmb;
sql語句 返回人民幣 大寫
create or replace function l2u 小寫金額轉換成大寫 n lowermoney in number return varchar2 asv lowerstr varchar2 200 小寫金額 v upperpart varchar2 200 v upperstr var...
人民幣金額大寫
q 在與財務相關的應用中,經常會用到人民幣金額的大寫,比如發票的列印程式。本題的任務是 從鍵盤輸入乙個十億以內的正整數 int型別 把它轉換為人民幣金額大寫 不考慮使用者輸入錯誤的情況 比如,使用者輸入 35201,程式輸出 叄萬伍仟貳佰零壹 使用者輸入 30201,程式輸出 叄萬零貳佰零壹 使用者...
人民幣大寫轉換
人民幣大寫轉換 param numbervalue 人民幣小寫 return rmbcapital function numbervalue var chinesevalue 轉換後的漢字金額 var string1 零壹貳叄肆伍陸柒捌玖 漢字數字 var string2 萬仟佰拾億仟佰拾萬仟佰拾元...