Oracle实验5(PLSQL2)

Oracle实验5(PLSQL2)

ID:38217060

大小:275.50 KB

页数:6页

时间:2019-05-29

Oracle实验5(PLSQL2)_第1页
Oracle实验5(PLSQL2)_第2页
Oracle实验5(PLSQL2)_第3页
Oracle实验5(PLSQL2)_第4页
Oracle实验5(PLSQL2)_第5页
资源描述:

《Oracle实验5(PLSQL2)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《Oracle数据库》实验教学指导书实验五PL/SQL程序设计(2)撰写人:郭云飞湘潭大学信息工程学院二○一五年四月十五日实验五PL/SQL程序设计(2)一.上机目的1.掌握存储过程、存储函数编程。2.掌握程序包编程。二.上机内容1.(1)编写一个存储过程total_income,如下:(2)调用该过程三次,观察结果,并思考为什么可以这样调用?EXECUTEtotal_income(10);EXECUTEtotal_income(0);EXECUTEtotal_income;(3)将该过程的执行权授予某个同学,如tom:GRA

2、NTexecuteONtotal_incomeTOtom;(4)请tom调用该过程(假如你的用户名为smith):EXECUTEsmith.total_income(10);得到结果:总收入:17750因为你的模式与tom的模式中都有emp表,这个结果是从谁的模式中统计出来的呢?(5)请tom将他的emp表改名为emp1:altertableemprenametoemp1;(6)请tom调用你的过程:EXECUTEsmith.total_income(10);结果如下:错误报告:ORA-00942:表或视图不存在ORA-065

3、12:在"SMITH.TOTAL_INCOME",line9ORA-06512:在line100942.00000-"tableorviewdoesnotexist"*Cause:*Action:(7)将对emp表select权授予tom:GRANTselectONempTOtom;(8)请tom再次调用你的过程:EXECUTEsmith.total_income(10);结果还是一样:错误报告:ORA-00942:表或视图不存在ORA-06512:在"SMITH.TOTAL_INCOME",line9ORA-06512:在l

4、ine100942.00000-"tableorviewdoesnotexist"*Cause:*Action:(9)修改过程,在from子句的emp前加上模式名,改为smith.emp。请tom再次调用该过程:EXECUTEsmith.total_income(10);得到正确结果:总收入:17750(10)从tom手里收回授权:REVOKEselectONtotal_incomeFROMtom;REVOKEselectONempFROMtom;(11)请tom将他的emp1表的名称改回emp:altertableemp1r

5、enametoemp;(12)修改过程,①将“AUTHIDCURRENT_USER”改为“AUTHIDDEFINER”,或者干脆删除,②将from子句中emp前的模式名去掉。再一次请tom合作。2.题目:1+2+…+n请编写一个名为F24的存储函数,计算1+2+…+n的和并返回。说明:n的值存放在A_DB模式中的“输入参数表”中。代码如下:调用存储函数F24:SQL>selectf24()resultfromdual;结果如下:RESULT----------500500查看自己有哪些存储过程与函数:selectlpad(ob

6、ject_name,12),object_type,procedure_namefromuser_procedures;3.题目:水仙花数在A_DB模式中有一个名为tanbn1(a,b)的表,表中有若干个整数(不要管是否有重复)。请编写一个名为F25的存储函数,统计该表中有多少个数是水仙花数,并作为函数返回值返回。说明:如果一个三位数等于其各位数字的立方之和,则该数称为水仙花数。如153=1*1*1+5*5*5+3*3*3。代码如下:调用存储函数F25:SQL>selectf25()resultfromdual;结果如下:RE

7、SULT----------3三.上机作业1.我们已经给“实验二PL/SQL程序设计(1)”上机作业中的PL/SQL块增加了异常处理部分(实验三上机作业),现在请将这些PL/SQL块改写为存储过程保存在数据库中,这些存储过程按顺序命名为P1,P2,……,P13。那些输入数据通过参数传递。2.在A_DB模式中有一个名为tan3(a)的表,表中有若干个整数(不要管是否有重复),假设这些数表示年份。请编写一个名为f2()的存储函数(无参数),统计该表中有多少个年份是闰年,并作为函数返回值返回。说明:闰年的计算方法:被400整除,或被

8、4整除而不能被100整除的年份为闰年。3.在A_DB模式中有一个名为tanbn1(a,b)的表。请编写一个名为f3()的存储函数(无参数),对于表中所有三位数abc,将个位与百位数字交换,得到cba,求这些cba的和,并作为函数返回值返回。4.编写一个名为pk4的程序包,包中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。