PL/SQL 综合复习题(2)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值