10.5
use stusys;
delimiter //
CREATE PROCEDURE P_title(in v_tno char(6),out v_type char(10))
begin
declare v_str char(12);
select title into v_str from teacher where tno=v_tno;
case v_str
when '教授' then set v_type='高级职称';
when '副教授' then set v_type='高级职称';
when '讲师' then set v_type='中级职称';
when '助教'then set v_type='初级职称';
else set v_type:='nothing';
end case;
end //
delimiter ;
call P_title('100006',@type);
select @type;
10.6
delimiter //
CREATE PROCEDURE P_integerSum(out v_suml int)
begin
declare v_n int default 1;
declare v_s int default 0;
while v_n<=100 do
set v_s=v_s+v_n;
set v_n=v_n+1;
end while;
set v_suml=v_s;
end //
delimiter ;
10.7
delimiter //
CREATE PROCEDURE P_oddSum(out v_sum2 int)
begin
declare v_n int default 1;
declare v_s int default 0;
while v_n<=100 do
set v_s=v_s+v_n;
set v_n=v_n+2;
end while;
set v_sum2=v_s;
end //
delimiter ;
call P_oddSum(@sum2);
select @sum2;
10.8
use stusys;
delimiter //
create procedure P_factorial( out v_prod int)
begin
declare v_n int default 1;
declare v_p int default 1;
label:loop
set v_p=v_p*v_n;
set v_n=v_n+1;
if v_n>10 then
leave label;
end if;
end loop label;
set v_prod=v_p;
end //
delimiter ;
call P_factorial(@prod);
select @prod;