资源描述:
《第5章 开发子程序与包(上机)01》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、上机5开发子程序和包上机内容Ø过程Ø函数Ø程序包上机目标Ø掌握过程的创建与使用Ø掌握函数的创建与使用Ø掌握包的创建与使用阶段1指导部分训练内容Ø创建并使用函数Ø创建并使用过程需求说明在应用程序中,财务处理程序经常需要将数字转换成人民币的大写形式。例如,123456.78经转换后大写为“壹拾贰万叁仟肆佰伍拾陆元柒角捌分”。要求创建一个函数,实现将数字转换成人民币大写的功能。实现思路(1)创建一个函数,命名为fun_change_rmb,该函数必须提供一个IN参数,用于接受用户输入的数字人民币。(2)该函数必须返回转换后的人民币大写,返
2、回值类型为VARCHAR2字符串类型。(3)创建fun_change_rmb函数的完整代码。CREATEORREPLACEFUNCTIONnum2rmb(jeNUMBER)RETURNVARCHAR2ISresultvarchar2(100);ipls_integer;snumvarchar2(20):=ltrim(replace(to_char(abs(je),'9999999999999990.99'),'.'));lenpls_integer:=length(snum);schvarchar2(20):='零壹贰叁肆伍陆柒捌玖
3、';sjinvarchar2(50):='分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟';srmbvarchar2(100):='';numpls_integer;jinvarchar(2);s_numpls_integer:=0;--'0'起始位置e_numpls_integer:=0;--'0'结束位置第5章上机第17页共17页beginforiin1..lenloopnum:=to_number(substr(snum,i,1));ifnum<>0then--非'0'时处理ifs_num=0thensrmb:=srmb
4、
5、substr
6、(sch,num+1,1)
7、
8、substr(sjin,len-i+1,1);--前面字符非'0',正常联接...elsesrmb:=srmb
9、
10、--否则casewhens_num=e_numthen--前面只有一个'0'cases_numwhen7then'万'--只处理进位when11then'亿'when15then'万'endwhene_num<12then--否则(多个'0'处理)casewhens_num<7then''--万以内...whens_num<11thencasewhene_num<8ands_num<10th
11、en'万'endwhens_num<15thencasewhene_num<12then'亿'endelse'万亿'endwhene_num<16ands_num>14then'万'end
12、
13、casewhens_num>3ande_num<3then'圆零'whene_num=3then'圆'whene_numnotin(7,11,15)ors_num-e_num>2then'零'end;srmb:=srmb
14、
15、substr(sch,num+1,1)
16、
17、substr(sjin,len-i+1,1);endif;s_num:=0;e_
18、num:=0;elseifs_num=0then--当s_num=0时'0'串起始s_num:=len-i+1;--记录开始e_num:=s_num;elsee_num:=len-i+1;endif;endif;endloop;ifs_num<>0then--此时以'0'结尾srmb:=srmb
19、
20、casewhens_num=lenthen'零圆整'--全'0'串,加...whens_num=1ors_num=2then'整'--分(1),角(2)后加...whens_num<7ors_num=10then'圆整'whens_num
21、<11then'万圆整'whens_num<15then'亿圆整'else'万亿圆整'end;elsesrmb:=srmb
22、
23、'整';--不以'0'结尾,加...endif;ifje<0thensrmb:='负'
24、
25、srmb;endif;RETURNsrmb;endnum2rmb;(4)图2.5.1将演示fun_change_rmb函数的使用过程。第5章上机第17页共17页图2.5.1使用fun_change_rmb函数实现人民币大小写转换练习部分(一)需求说明假定存在一张商品销售表tb_shop_sell,其数据结构如图2.5.2
26、所示。要求:(1)创建此商品销售表。(2)创建一个过程,用于向表中插入数据。(3)创建一个视图,并使用fun_change_rmb函数,查询出以人民币大写形式表示的销售总额。图2.5.2商品销售表实现思路(1)创建商品销售表tb_sh