一、实验内容
1、创建一个存储过程,计算employee表中的员工人数,并存储到一个局部变量中,并输出该变量结果,尝试调用存储过程。
2、创建一个存储过程,比较两个员工的实际收入,若前者比后者高 就输出0,否则输出1,员工用其员工编号识别
3、创建触发器,在employee表中删除员工信息的同时将salary表中该员工的信息删除,以确保数据完整性。创建完成后尝试删除employee表中的一行数据,然后查看salary表中的变化情况
4、当修改employee表时,若将employee表中的员工工作时间增加一年,则将收入增加500,增加两年则收入增加1000,以此类推
思考题:
研究database3中的insertOrders.sql和insertPsrtSupp.sql两个存储过程文件,分析其产生数据的原理以及存储过程主体语句功能
二、实验过程
1、use dbem;
delimiter
create procedure test (out amount1 int)
begin
declare amount int;
set amount=(select count(*)from employee);
set amount1=amount;
end
delimiter ;
call test(@amount1);
select @amount1;
2、delimiter
create procedure comp(in id1 char(6),in id2 char(6),out bj int)
begin
declare sr1,sr2 float;
select Income-Outcome into sr1 from salary
where employeeID=id1;
select Income-Outcome into sr2 from salary
where employeeID=id2;
if sr1>sr2 then set bj=0;
else set bj=1;
end if;
end
delimiter ;
call comp(‘000001’,‘108991’,@bj1);
select @bj1;
3、create trigger delete1 after delete
on employee for each row
begin
delete from salary where employeeID=old.employeeID;
end
delimiter ;
SET SQL_SAFE_UPDATES = 0;
delete from employee
where employeeID=504209;
delimiter
4、create trigger employee_update after update
on employee for each row
begin
update salary set income=(income+(new.workYear-old.workYear)*500);
end
delimiter ;
update employee
set workYear=8
where employeeID=“000001”;
修改前:
修改后:
三、思考题
对于insertOrders:将customer数量的值赋值给customerCount。当p_orderCount大于零时,将tmpOrder的值加一,并将它赋值给NewOrderKey。将customerCount乘以一百再乘以一个随机值后与它本身求模后的值赋值给tmpCust。最后向Orders里插入数据,实现核心功能。
对于insertPartSupp:将Part,Supplier数量值分别赋值给partCount,supplierCount。当p_partsuppCount大于零时,将partCount,supplierCount乘以一百再乘以一个随机值后与它本身求模后的值分别赋值给tmpPart,tmpSupp。最后实现的核心功能是向PartSupp中插入数据。