教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

实验3:三轮乱弄版

来源:网络收集 时间:2026-05-23
导读: Oracle数据库管理与开发I 实验报告 系所: 专业: 学生姓名: 学生学号: 提交日期: 大连东软信息学院 Dalian Neusoft University of Information Oracle数据库管理与开发I 实验报告 [实验名称]:利用PLSQL进行系统功能模块的开发 [实验日期]: [实验目的]

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
实验3:三轮乱弄版.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/598536.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)