使用PL/SQL针对Scott模式中的数据完成以下任务:
1. 编写一个数据库触发器,当任何时候某个部门从"dept"中删除时,该触发器将从"emp"表中 删除该部门的所有雇员。
2. 编写一个数据包,它有两个函数和两个过程以操作"emp"表。该数据包要执行的任务为:
①插入一个新雇员;
②删除一个现有雇员;
③显示指定雇员的整体薪水;
④显示指定雇员所在部门名称。
---------------------------------------------------------
1.create or replace trigger Trigger_dept_emp
before delete on dept
for each row
begin
delete from emp where deptno=:old.deptno;
end Trigger_dept_emp;
/
2.create or replace package Emp_Operate is
function show_sal(F_EMPNO in NUMBER)
return NUMBER;
function show_dname(F_EMPNO in NUMBER)
return varchar2;
end Emp_Operate;
/
create or replace package body Emp_Operate is
procedure insert_emp( P_EMPNO NUMBER,
P_ENAME VARCHAR2,
P_JOB VARCHAR2,
P_MGR NUMBER,
P_HIREDATE VARCHAR2,
P_SAL NUMBER,
P_COMM NUMBER,
P_DEPTNO NUMBER) is
begin
insert into emp values(P_EMPNO,P_ENAME,P_JOB,P_MGR,to_date(P_HIREDATE,'yyyy-mm-dd'),P_SAL,P_COMM,P_DEPTNO);
end insert_emp;
procedure delete_emp(P_EMPNO NUMBER) is
begin
delete from emp where empno=P_EMPNO;
end delete_emp;
function show_sal(F_EMPNO in NUMBER)
return NUMBER is
F_SAL NUMBER;
begin
select SAL INTO F_SAL from EMP where EMPNO=F_EMPNO;
return F_SAL;
end show_sal;
function show_dname(F_EMPNO in NUMBER)
return varchar2 is
F_DNAME varchar2(20);
begin
select DNAME into F_DNAME from DEPT,EMP where DEPT.DEPTNO=EMP.DEPTNO AND EMP.EMPNO=F_EMPNO;
return F_DNAME;
end show_dname;
end Emp_Operate;
/
调用方法不再赘述