实验3:三轮乱弄版
Oracle数据库管理与开发I
实验报告
系所: 专业:
学生姓名: 学生学号: 提交日期:
大连东软信息学院
Dalian Neusoft University of Information
Oracle数据库管理与开发I 实验报告
[实验名称]:利用PLSQL进行系统功能模块的开发 [实验日期]:
[实验目的]:掌握PL/SQL程序设计
[实验要求]:按要求利用PL/SQL进行功能模块开发 [实验步骤描述]:
1. 编写一个PL/SQL块,输出所有员工的员工姓名、员工号、工资和部门号。
declare
cursor c_emp isselect * from employees; begin
for v_emp in c_emp loop
dbms_output.put_line(v_emp.first_name||'' ||v_emp.employee_id||' '||v_emp.department_id||' '||v_emp.salary); endloop; end;
2. 编写一个PL/SQL块,输出所有比本部门平均工资高的员工信息。
declare
v_avg employees.salary%type; begin
for v_emp in (select * from employees) loop
selectavg(salary) into v_avg from employees where department_id = v_emp.department_id;
if v_emp.salary >= v_avg then
dbms_output.put_line(v_emp.employee_id||''||
v_emp.first_name||''|| v_emp.salary ||''|| v_emp.department_id); endif; endloop; end;
Oracle数据库管理与开发I 实验报告
3. 写一个PL/SQL块,输出所有员工及其部门领导的姓名、员工号及部门号。
declare
cursor c_emp isselect * from employees; v_emp1 c_emp%rowtype; v_emp2 c_emp%rowtype; begin open c_emp; loop
fetch c_emp into v_emp1; exitwhen c_emp% notfound;
if v_emp1.manager_id isnotnullthen
select * into v_emp2 from employees where employee_id = v_emp1.manager_id;
dbms_output.put_line(''||v_emp1.first_name||''|| v_emp1.employee_id ||''|| v_emp1.department_id);
dbms_output.put_line(''||v_emp2.first_name||''||v_emp2.employee_id||''|| v_emp2.department_id);
else dbms_output.put_line(''||v_emp1.first_name||''|| v_emp1.employee_id ||''|| v_emp1.department_id); endif ; endloop; close c_emp; end;
4. 查询姓为“Smith”的员工信息,并输出其员工号、姓名、工资、部门号。如果该员工
不存在,则插入一条新记录,员工号为2014,员工姓为“Smith”,工资为7500元,EMAIL为smith@neusoft.edu.cn,入职日期为“2000年10月5日”,职位编号为AD_VP,部门号为50。如果存在多个名为“Smith”的员工,则输出所有名为“Smith”的员工号、姓名、工资、入职日期、部门号、EMAIL。
declare
v_emp employees%rowtype; begin
select * into v_emp from employees where last_name='Simth'; dbms_output.put_line(v_emp.first_name||' '||v_emp.last_name||' '||v_emp.employee_id||' '||v_emp.salary||' '||v_emp.department_id); exception
when no_data_found then insertinto
employees(employee_id,last_name,salary,EMAIL,hire_date,job_id,departm
Oracle数据库管理与开发I 实验报告
ent_id)
values(2014,'Simth',7500,'smith@neusoft.edu.cn',to_date('2000-10-05','yyyy-mm-dd'),'AD_VP',50); when too_many_rows then
for v_emp in (select *from employees where last_name='Simth') loop dbms_output.put_line(v_emp.first_name||' '||v_emp.last_name||' '||v_emp.employee_id||' '||v_emp.salary||' '||v_emp.hire_date||' '||v_emp.email||' '||v_emp.department_id); endloop; end;
5. 编写一个PL/SQL块,根据员工职位不同更新员工的工资。职位为AD_PRES、AD_VP、
AD_ASST的员工工资增加1000元,职位为FI_MGR、FI_ACCOUNT的员工工资增加800元,职位为AC_MGR 、AC_ACCOUNT的员工工资增加700元,职位为SA_MAN、SA_REP的员工工资增加600元,职位为PU_MAN、PU_CLERK的员工工资增加500元,职位为ST_MAN、ST_CLERK、SH_CLERK的员工工资增加400元,职位为IT_PROG、MK_MAN、MK_REP的员工工资增加300元,其它职位的员工工资增加200元。
declare
v_sal employees.salary%type; begin
for v_emp in ( select * from employees) loop
if v_emp.job_id= 'AD_PRES'or v_emp.job_id='AD_VP'or v_emp.job_id= 'AD_ASST'then v_sal:=1000;
else if v_emp.job_id= ' FI_MGR'or v_emp.job_id= 'FI_ACCOUNT'then v_sal:=800;
else if v_emp.job_id= 'AC_MGR'or v_emp.job_id='AC_ACCOUNT'then v_sal:=700;
else if v_emp.job_id= 'SA_MAN'or v_emp.job_id= 'SA_REP'then v_sal:=600;
else if v_emp.job_id= 'PU_MAN'or v_emp.job_id= 'PU_CLERK'then v_sal:=500;
else if v_emp.job_id='ST_MAN'or v_emp.job_id= 'ST_CLERK'or v_emp.job_id='SH_CLERK'then v_sal:=400;
else if v_emp.job_id= 'IT_PROG'or v_emp.job_id= 'MK_MAN'or v_emp.job_id='MK_REP'then v_sal:=300; else
Oracle数据库管理与开发I 实验报告
v_sal:=200; endif;
update employees set salary = v_emp.salary + v_sal where employee_id = v_emp.employee_id; endloop; end;
6. 编写一个PL/SQL块,修改员工号为201的员工工资为8000元,保证修改后的工资在
职位允许的工资范围之内,否则取消操作,并说明原因。
declare
v_salmin employees.salary%type; v_salmax employees.salary%type; e_lightlinit exception; begin
v_salmin:=&x; v_salmax:=&y;
update employees set salary = 8000where employee_id = 201;
if v_salmax<8000then raise e_lightlinit; elsif v_salmax>8000then raise e_lightlinit; endif; exception
when e_lightlinit then
dbms_output.put_line('工资超限制!'); rollback; whenothersthen
dbms_output.put_line('未知错误!'); end;
7. 创建一个存储过程,以员工号为参数,输出该员工的工资。 --不知道對不對
createorreplaceprocedure pro_sal(
v_employees_name in employees.employee_id%type) as
v_sal number; v_deptno number; begin
select department_id into v_deptno from employees where employee_id=p_empno;
select salary into v_sal from employees where departments_id=v_deptno;
…… 此处隐藏:2321字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




