大型数据库实验报告
实验课程: 姓名: 实验地点 大型数据库技术 班级: 实验时间 实验名称: 学号: 成绩: PL/SQL程序 【实验目的】 (1)熟悉PL/SQL的基本结构和基本规则 (2)学会应用Oracle的系统函数编写PL/SQL程序 (3)学会创建与操作游标 (4)学会创建与使用自定义函数 (5)学会创建与使用存储过程 (6)学会创建与执行触发器 (7)学会创建与使用程序包 【实验内容】 【任务描述】 1、查询emp表的工资,输入员工编号,根据编号查询工资。如果工资高于3000元,则显示高工资;如果工资大于2000元,则显示中等工资;如果工资小于2000元,则显示低工资。DECLARE v_empSal emp.sal%TYPE ; -- 定义变量与emp.sal字段类型相同 v_empName emp.ename%TYPE ; -- 定义变量与emp.ename字段类型相同 v_eno emp.empno%TYPE ; -- 定义变量与emp.empno字段类型相同 BEGIN v_eno := &inputEmpno; -- 用户输入要查找的雇员编号 -- 根据输入的雇员编号查找雇员姓名及工资 SELECT ename,sal INTO v_empName,v_empSal FROM emp WHERE empno=v_eno; IF v_empSal> 3000 THEN -- 判断 DBMS_OUTPUT.put_line(v_empName || '的工资属于高工资!') ; ELSIF v_empSal> 2000 THEN -- 判断 DBMS_OUTPUT.put_line(v_empName || '的工资属于中等工资!') ; ELSE DBMS_OUTPUT.put_line(v_empName || '的工资属于低工资!') ; END IF; END; 2、用户输入一个雇员编号,根据它所在的部门给上涨工资,规则: ? 10部门上涨10%,20上涨20%,30上涨30%; ? 但是要求最高不能超过5000,超过5000就停留在5000。 DECLARE v_empSal emp.sal%TYPE ; -- 定义变量与emp.sal字段类型相同 v_dno emp.deptno%TYPE ; -- 定义变量与emp.deptno字段类型相同 v_eno emp.empno%TYPE ; -- 定义变量与emp.empno字段类型相同 BEGIN v_eno := &inputEmpno; -- 用户输入要查找的雇员编号 SELECT deptno,sal INTO v_dno, v_empSal FROM emp WHERE empno = v_eno ; IF v_dno = 10 THEN IF v_empSal * 1.1 > 5000 THEN UPDATE emp SET sal=5000 WHERE empno=v_eno; ELSE UPDATE emp SET sal=sal*1.1 WHERE empno=v_eno; END IF; ELSIF v_dno = 20 THEN IF v_empSal * 1.2 > 5000 THEN UPDATE emp SET sal =5000 WHERE empno=v_eno; ELSE UPDATE emp SET sal=sal*1.2 WHERE empno=v_eno; END IF; ELSIF v_dno = 30 THEN IF v_empSal * 1.3 > 5000 THEN UPDATE emp SET sal=5000 WHERE empno=v_eno; ELSE UPDATE emp SET sal=sal*1.3 WHERE empno=v_eno; END IF; ELSE null; END IF; END; 3、存储函数用于计算员工应缴的个人所得税,这个函数以部门号为参数,计算该部门中全部员工的所得税总和。 假设税率为3% ,该函数用SUM 函数计算全体员工的工资总和,然后乘以3% ,并将最后的结果返回。 4、定义过程,根据雇员编号找到雇员姓名及工资。 5、编写一个数据库触发器, A、当任何时候某个部门从dept1表中删除时,该触发器将从emp1表中删除该部门的所有雇员。(要求:emp1表、dept1表均为复制后的表) B、当用户对执行DML语句时,将相关信息记录到test日志表。