PLSQL 综合复习题(2)

    技术2022-05-11  70

    PL/SQL 综合复习题(2) 案例介绍 某数据库有三张表,是关于某公司员工资料、薪水 , 部门和工作地点信息的,它们分别是 emp , dept 表,和 location . 三张表的结构如下: Emp: 用于存储员工的工号,姓名,工资信息。 Column name Date type Is null Primary Key comment Emp_id Number(5) False Yes   Emp_name Varchar2(20) False     Emp_salary Number(6)       Dept_id Number(5) False   Foreign Key Dept 用于记录部门信息,部门名称 Column name Date type Is null Primary Key comment Dept_id Number(5) False Yes   Dept_name Varchar2(20) False     Loc_id Number(5) False   Foreign Key Location 用于记录办公地点信息,办公地点名称 Column name Date type Is null Primary Key comment Loc_id Number(5) False Yes   Loc_name Varchar2(20) False       1 、按照上表结构建立相应的表并插入下面的测试数据 . 2. 创建一个存储过程来计算每个 BUILDING 里上班的总员工数 , 如果有没有员工工作的 BUILDING, 用异常来显示一条错误信息 . 3 .创建并应用一个修改工资的游标,为指定部门的员工按照一定规则进行加薪。规则如下: 原工资 <= 2000 , 加薪 25% ;  2000< 原工资 <= 3000 , 加薪 15%    3000< 原工资 <=5000 , 加薪 8% 5000 > 原工资  , 加薪 4% 要求 : 需要有一个为单个员工进行加薪的函数 . 该函数有两个 IN 的参数 , 员工编号和加薪幅度 , 并返回加薪后的总薪水 . 需要有一个为单个部门内的所有员工进行加薪的存储过程 . 该过程有一个 IN 的参数 , 部门名字 , 和一个 OUT 的参数 , 该部门的总薪资 . 该过程将通过一个带参数的游标来调用为单个员工加薪的函数来为每个部门员工计算薪水 .   4 .创建一个触发器记录上题中员工 ID 加薪前和加薪后的薪资。   5. 因为 BUILDINGA 要装修 , BUILDINGA 里的所有员工搬去 BUILDINGC 里面 , 并给每个员工 500 圆的补贴费 . 该补贴费由部门来发放 , 所以需要知道每个部门应该付出的补贴费 .     EMP_ID EMP_NAME EMP_SALARY DEPT_ID 00101 AARON 4200 005 00203 CLARA 3600 002 00507 CHRIS 2500 005 00045 SAM 1500 005 00406 JACK 2200 004 TEST DATA FOR TBALE EMP   DEPT_ID DEPT_NAME LOC_ID 001 HR 01005 002 ADMIN 01001 003 TR 01005 004 MARKETING 01005 005 IT 01001 TEST DATA FOR TABLE DEPT   LOC_ID LOC_NAME 01001 BUILDINGA 01005 BUIDLINGB 01006 BUILDINGC

    最新回复(0)