MySQL查询和存储过程练习题

13 篇文章 0 订阅
7 篇文章 0 订阅
-- ---------------1.练习题分割线开始---------------
-- 1、创建一个存储过程,通过接收员工工号,能够计算出员工每个月工资
create procedure pro_8(in emp_empno int,out emp_ename varchar(20),out wage float)
begin
select emp.ename,job.sal+job.comm into emp_ename,wage from emp inner join job on emp.jobno=job.jobno where emp_empno=empno;
end;
-- 验证
call pro_8(20164001,@a,@b);
select @a,@b;
-- 2、创建一个存储过程,通过接收员工工号,能够计算出员工的年薪
--     (董事长为15薪,总经理为14薪,部门经理为13薪,职员为12薪)
create procedure pro_10(in emp_empno int,out emp_ename varchar(20),out wage float)
begin 
declare a int ;
set a=(select jobno from emp where empno=emp_empno);
if a=(select jobno from job where jobname="董事长") then
select emp.ename,15*(job.sal+job.comm) into emp_ename,wage from emp inner join job on emp.jobno=job.jobno where emp_empno=empno and job.jobname="董事长";
elseif a=(select jobno from job where jobname="总经理") then
select emp.ename,14*(job.sal+job.comm) into emp_ename,wage from emp inner join job on emp.jobno=job.jobno where emp_empno=empno and job.jobname="总经理";
elseif a=(select jobno from job where jobname="部门经理") then
select emp.ename,14*(job.sal+job.comm) into emp_ename,wage from emp inner join job on emp.jobno=job.jobno where emp_empno=empno and job.jobname="部门经理";
elseif a=(select jobno from job where jobname="职员") then
select emp.ename,12*(job.sal+job.comm) into emp_ename,wage from emp inner join job on emp.jobno=job.jobno where emp_empno=empno and job.jobname="职员";
end if;
end
-- 验证董事长年薪
call pro_10(20161001,@a,@b);
select @a,@b;
-- 验证总经理年薪
call pro_10(20162001,@a,@b);
select @a,@b;
-- 验证部门经理年薪
call pro_10(20163001,@a,@b);
select @a,@b;
-- 验证职员年薪
call pro_10(20164001,@a,@b);
select @a,@b;
-- 3、创建一个存储过程,向表job表中插入10条数据,要求职位编号为101至110,职位名称为‘职位101’至‘职位110’,工资和奖金都设置为1000
create procedure pro_insert_job()
begin
declare a int ;
declare b varchar(20);
declare c float(7,2);
declare d float(7,2);
set a=101;
set b=concat('职位',a);
set c=1000;
set d=1000;
while a<=110 do
insert into job values (a,b,c,d);
set a=a+1;
end while;
end
-- 验证
call pro_insert_job();
select * from job;
-- ---------------1.练习题分割线结束---------------

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值