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
转载请注明原文地址: https://ibbs.8miu.com/read-20750.html