题目一:
使用 MySQL Workbench 或者其他的图形化工具,创建存储过程,计算出 1500
以内能被 9 整除的整数的个数。把操作结果和操作过程截屏,填写到实验报告中。
delimiter //
create procedure topic1(out num int)
BEGIN
declare i int default 0;
set num=0;
while i<1500 do-- 循环开始
set i=i+1;
if mod(i,9)=0 THEN
set num=num+1;
end if;-- 结束循环
end while;-- 循环结束
end;
-- 调用存储过程
call topic1(@num);
-- 查询变量值
select @num;
结果:
题目二:
使用 MySQL Workbench 或者其他的工具,创建一个存储过程,该存储过程可以
根据输入的日期值(例如“20200201”),计算与当前日期(今天)相差的天数,
并返回这个天数,创建该存储过程,并输入任意值,测试该存储过程两次。把操
作结果和操作过程截屏,填写到实验报告中。
delimiter //
CREATE PROCEDURE topic2_2(IN date1 DATE,OUT date2 int)
BEGIN
SET date2 = DATEDIFF(date1,CURDATE());
END;
CALL topic2_2(20200201,@date2);
SELECT @date2;
结果:
题目三:
使用 MySQL Workbench 或者其他的图形化工具,创建一个存储过程,该存储
过程可以根据输入的成绩,返回成绩的等级,例如成绩在 100~90 分之间,输出成
绩等级为“优”;如果成绩在 80~89 分之间,输出成绩等级为“良”,如果成绩在
70~79 分之间,输出成绩等级为“中”,如果成绩在 60~69 分之间,输出成绩等级
为“及格”,如果成绩在 60 分以下,输出成绩等级为“不及格”,如果成绩为空值
或者不在 0~100 之间,输出“成绩数据有误”。至少输入 3 组数据,测试上面的存
储过程。把操作结果和操作过程截屏,填写到实验报告中。
delimiter //
create procedure topic3_1(in score int,out grade varchar(10))
begin
case
when score>=90 then set grade = '优';
when score>=80 then set grade = '良';
when score>=70 then set grade = '中';
when score>=60 then set grade = '及格';
else set grade = '不及格';
end case;
end;
call topic3_1(77,@score);
select @score
call topic3_1(17,@score);
select @score
call topic3_1(97,@score);
select @score
结果:
题目四:
使用 MySQL Workbench 或者其他的图形化工具,创建一段程序将 1 到 8000 之
间的整数累加,如果该整数可以被 5 或者 9 整除,则不进行累加;当累加的总和
超过 25000 了,就结束累加,并将被累加的整数插入到一个表中,该表的结构根
据实际情况自行设计。查询该表,显示所有被累加的整数。
delimiter //
create procedure add_fun1_4(out result int) -- 定义函数
begin
declare i int default 0; -- 定义并初始化累加变量
declare sum int default 0;
set result = 0; -- 初始化结果变量
xh_block: -- 定义循环块
begin
while i<8000 do -- while循环开始
set i = i+1; -- 累加
if ((mod(i,5)=0) or (mod(i,9)=0)) then -- 如果该整数可以被 5 或者 9 整除,则不进行累加
set sum = sum+i;
if sum>=25000 then -- 当累加的总和超过 25000 了,就结束累加
set result = sum;
leave xh_block; -- 离开循环块
end if;
end if;
end while;
end xh_block;
end;
call add_fun1_4(@result); -- 调用存储过程
select @result; -- 查询变量值
结果: