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

实验3:三轮乱弄版(2)

来源:网络收集 时间:2026-05-23
导读: Oracle数据库管理与开发I 实验报告 dbms_output.put_line(v_sal); exception when no_data_found then dbms.output.put_line('员工不存在'); end; --自己寫的 8. 创建一个存储过程,以员工号为参数,修改该员工的工

Oracle数据库管理与开发I 实验报告

dbms_output.put_line(v_sal); exception

when no_data_found then

dbms.output.put_line('员工不存在'); end;

--自己寫的

8. 创建一个存储过程,以员工号为参数,修改该员工的工资。若该员工属于10号部门,

则工资增加140元;若属于20号部门,则工资增加200元;若属于30号部门,则工资增加250元;若属于其他部门,则工资增长300元。

createorreplaceprocedure pro_sal_change(

v_employees_name in employees.employee_id%type) as

v_sal number; v_deptno number; begin

FOR v_emp IN c_emp LOOP CASE v_emp.department_id WHEN10THEN v_increment:=140; WHEN20THEN v_increment:=200; WHEN30THEN v_increment:=250; ELSE v_increment:=300; ENDCASE;

UPDATE employees SET salary=salary+v_increment WHERECURRENTOF c_emp; ENDLOOP; exception

when no_data_found then

dbms.output.put_line('员工不存在'); end;

9. 创建一个函数,以员工号为参数,返回该员工的工资。

CREATEORREPLACEFUNCTION func_emp_salary( p_empno employees.employee_id%type) RETURN employees.salary%type AS

v_sal employees.salary%type; BEGIN

SELECT salary INTO v_sal FROM employees WHERE employee_id=p_empno;

Oracle数据库管理与开发I 实验报告

RETURN v_sal; EXCEPTION

WHEN NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR(-20000,'There is not such an employee!'); END func_emp_salary;

10. 创建一个函数,以部门号为参数,返回该部门的平均工资;

createorreplacefunction dro_avg_salary( v_deptno emp.deptno%type) return emp.sal%type is

vr_sal emp.sal%type; begin

selectavg(sal) into vr_sal from emp where deptno = v_deptno; return vr_sal; end;

11. 创建一个函数,以员工号为参数,返回该员工所在部门的平均工资。

CREATEORREPLACEFUNCTION func_emp_dept_avgsal( p_empno employees.employee_id%type) RETURN employees.salary%type AS

v_deptno employees.department_id%type; v_avgsal employees.salary%type; BEGIN

SELECT department_id INTO v_deptno FROM employees WHERE employee_id=p_empno;

SELECTavg(salary) INTO v_avgsal FROM employees WHERE department_id=v_deptno; RETURN v_avgsal; EXCEPTION

WHEN NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR(-20000,'There is not such an employee!'); END func_emp_dept_avgsal;

Oracle数据库管理与开发I 实验报告

12. 在employees表上创建一个触发器,保证每天8:00~17:00之外的时间禁止对该表进

行DML操作。 --自己做

createorreplacetrigger trg_emp beforeinsertorupdateordelete on employees begin

if to_char(sysdate,'HH24:MI')NOTBETWEEN'08:00'AND'17:00' THEN

RAISE_APPLICATION_ERROR (-20005,'只能在正常的工作时间内进行改变。'); ENDIF; END trg_emp;

--自己寫的

13. 在employees表上创建一个触发器,当插入、删除或修改员工信息时,统计各个部门的

人数及平均工资,并输出。

createorreplacetrigger trg_emp_dept_stat afterinsertordeleteorupdateof salary on employees declare

v_count number; v_salary number(6,2); begin

if inserting or deleting or updating then

for v in(select department_id,count(*)num,avg(salary)avgsal groupby department_id)loop

dbms_output.put_line(v.department_id||''||v.num); endloop; end;

Oracle数据库管理与开发I 实验报告

[教师评语]:

…… 此处隐藏:565字,全部文档内容请下载后查看。喜欢就下载吧 ……
实验3:三轮乱弄版(2).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)