- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle实验5(PLSQL2).pdf
《Oracle 数据库》
实验教学指导书
实验五 PL/SQL 程序设计(2)
撰写人:郭云飞
湘潭大学
信息工程学院
二○一五年四月十五日
实验五 PL/SQL 程序设计(2)
一.上机目的
1. 掌握存储过程、存储函数编程。
2 . 掌握程序包编程。
二.上机内容
1.
(1)编写一个存储过程total_income ,如下:
(2)调用该过程三次,观察结果,并思考为什么可以这样调用?
EXECUTE total_income( 10);
EXECUTE total_income(0);
EXECUTE total_income;
(3)将该过程的执行权授予某个同学,如tom :
GRANT execute ON total_incomeTO tom;
(4)请tom 调用该过程(假如你的用户名为smith ):
EXECUTE smith.total_income( 10);
得到结果:
总收入:17750
因为你的模式与tom 的模式中都有emp 表,这个结果是从谁的模式中统计出来的呢?
(5)请tom 将他的emp 表改名为emp1 :
alter table emp rename to emp 1;
(6)请tom 调用你的过程:
EXECUTE smith.total_income( 10);
结果如下:
错误报告:
ORA-00942: 表或视图不存在
ORA-06512: 在SMITH.TOTAL_INCOME, line 9
ORA-06512: 在line 1
00942. 00000 - table or view does not exist
*Cause:
*Action:
(7)将对emp 表select 权授予tom :
GRANT select ON emp TO tom;
(8)请tom 再次调用你的过程:
EXECUTE smith.total_income( 10);
结果还是一样:
错误报告:
ORA-00942: 表或视图不存在
ORA-06512: 在SMITH.TOTAL_INCOME, line 9
ORA-06512: 在line 1
00942. 00000 - table or view does not exist
*Cause:
*Action:
(9)修改过程,在from 子句的emp 前加上模式名,改为smith.emp 。请tom 再次调用该过程:
EXECUTE smith.total_income( 10);
得到正确结果:
总收入:17750
(10)从tom 手里收回授权:
REVOKE select ON total_income FROM tom;
REVOKE select ON emp FROM tom;
(11) 请tom 将他的emp1 表的名称改回emp :
alter table emp1 rename to emp;
(12)修改过程,①将“AUTHID CURRENT_USER ”改为“AUTHID DEFINER ”,或者干脆删除,②将
from 子句中emp 前的模式名去掉。再一次请tom 合作。
2 . 题目:1+2+…+n
请编写一个名为F24 的存储函数,计算1+2+…+n 的和并返回。
说明:n 的值存放在A_DB 模式中的“输入参数表”中。
代码如下:
调用存储函数F24 :
SQL select f24( ) result from dual;
结果如下:
RESULT
500500
查看自己有哪些存储过程与函数:
select lpad(object_name,12), object_type, procedure_name from user_procedures;
3 . 题目:水仙花数
在A_DB 模式中有一个名为tanbn1(a,b) 的表,表中有若干个整数(不要管是否有重复)。
请编写一个名为F25 的存储函数,统计该表中有多少个数是水仙花数,并作为函数返回值返回。
说明:如果一个三位数等于其各位数字的立方之和,则该数称为水仙花数。如 153=1*1*1+5*5*5+3*3*3。
代码如下:
调用存储函数F25:
SQL select f25( ) result from dual;
结果如下:
文档评论(0)