感谢大家帮忙!!求解下面的题目 %>_<%
建立表、索引、视图、同义词
对数据进行插入操作 编写一个PL/SQL块
题目如下:2) 建立表(设计雇员信息表、部门表、工资表)、插入数据、建立同义词、索引、视图的操作。3) 编写PL/SQL程序块ShowInfo,给定一个员工号就可以显示其姓名、性别等信息,如果该员工不存在则显示‘对不起,没有此员工!’ 4) 编写PL/SQL程序块processInfo,对员工年龄进行判断,决定缴费基数,计算社保费,写入数据库中。
年龄 社保缴费工资基数 个人每月社保费 备注
Year<18 无 无 解聘
18<=year<22 2000 工资*0.07
22<=year<30 3000 工资*0.08
30<=year<40 4000 工资*0.09
40<=year<=60 5000 工资*0.11
Year>60 无 无 退休
注意:社保缴费工资与实际工资可以不相同,社保缴费工资和每月养老保险费可以放在工资表里。
建立表、索引、视图、同义词
对数据进行插入操作 编写一个PL/SQL块
题目如下:2) 建立表(设计雇员信息表、部门表、工资表)、插入数据、建立同义词、索引、视图的操作。3) 编写PL/SQL程序块ShowInfo,给定一个员工号就可以显示其姓名、性别等信息,如果该员工不存在则显示‘对不起,没有此员工!’ 4) 编写PL/SQL程序块processInfo,对员工年龄进行判断,决定缴费基数,计算社保费,写入数据库中。
年龄 社保缴费工资基数 个人每月社保费 备注
Year<18 无 无 解聘
18<=year<22 2000 工资*0.07
22<=year<30 3000 工资*0.08
30<=year<40 4000 工资*0.09
40<=year<=60 5000 工资*0.11
Year>60 无 无 退休
注意:社保缴费工资与实际工资可以不相同,社保缴费工资和每月养老保险费可以放在工资表里。
create table
insert into 。。
create index
create view
这些DDL google 搜一下一堆一堆的 建议你搜搜去 没有什么难度 3) 编写PL/SQL程序块ShowInfo,给定一个员工号就可以显示其姓名、性别等信息,如果该员工不存在则显示‘对不起,没有此员工!’
这个过程
就是一个表连接 在判断 数据是否为空
4) 编写PL/SQL程序块processInfo,对员工年龄进行判断,决定缴费基数,计算社保费,写入数据库中。
年龄 社保缴费工资基数 个人每月社保费 备注
Year<18 无 无 解聘
18<=year<22 2000 工资*0.07
22<=year<30 3000 工资*0.08
30<=year<40 4000 工资*0.09
40<=year<=60 5000 工资*0.11
Year>60 无 无 退休这个 语句套用 CASE WHEN 18<=year<22 then 工资*0.07
................
老师留下的作业 还是建议自己google 搜搜 自己去做的
1、
雇员信息表:
CREATE TABLE EMP(
EMPNO NUMBER(4) NOT NULL, --员工编号
ENAME VARCHAR2(10), --员工姓名
SEX VARCHAR2(1) check(sex in ('F','M')) , -- 性别
AGE number, --年龄
addr VARCHAR2(100), -- 住址
DEPTNO NUMBER(2) --部门
);部门表
CREATE TABLE DEPT (
DEPTNO NUMBER(2) not null, --部门编号
DNAME VARCHAR2(14), --部门名称
LOC VARCHAR2(13) --所在地
); 工资表
CREATE TABLE EMP_SAL (
EMPNO NUMBER(4) NOT NULL, --员工编号
DTCYC varchar2(6), --月份
SAL NUMBER, --实际工资
SAL_1 number, --社保缴费工资
SAL_2 number --社保费
);2、
create or replace ShowInfo(p_empno in varchar2)
is
v_ename emp.ename%type;
v_sex emp.sex%type;
cursor emp_cur is select ename,sex,birthday,addr from emp where empno=p_empno;
begin
if (emp_cur%isopen)==flase then
open emp_cur;
loop
fetch emp_cur into v_ename,v_sex;
if emp_cur%found then
dbms_output_line('===员工信息===');
dbms_output_line('===姓名:'||v_ename);
dbms_output_line('===性别:'||v_sex);
else
dbms_output_line('对不起,没有此员工!');
end if;
end loop;
close emp_cur;
end;
3、
创建社保费表
create table emp_sal_detail (
EMPNO VARCHAR2(4), --员工编号
AGE NUMBER, --年龄
SAL_1 number,--社保缴费工资基数
SAL_2 number, --个人每月社保费
sumary varchar2(100) --备注
);
create or replace processInfo(p_empno in varchar2)
is
v_age emp.age%type;
v_sal emp_sal.sal%type;
begin
select age into v_age from emp where empno=p_empno;
select sal into v_sal from emp_sal where empno=p_empno;
if v_age<18 then
insert into emp_sal_detail values(p_empno,v_age,0,0,'解聘');
elsif 18<=v_age and v_age<22 then
insert into emp_sal_detail values(p_empno,v_age,2000,v_sal*0.07,null);
elsif 22<=v_age and v_age<30 then
insert into emp_sal_detail values(p_empno,v_age,3000,v_sal*0.08,null);
elsif 30<=v_age and v_age<40 then
insert into emp_sal_detail values(p_empno,v_age,4000,v_sal*0.09,null);
elsif 40<=v_age and v_age<60 then
insert into emp_sal_detail values(p_empno,v_age,5000,v_sal*0.11,null);
else
insert into emp_sal_detail values(p_empno,v_age,null,null,'退休');
end if;
exception
when no_data_found then
null;
end;