case
用case解决传入的值是否是数字
CREATE PROCEDURE `test_case`(num int,out flag varchar(20))
BEGIN
case num #类似于swtich
when num>0 then set flag= '是正数';
when num=0 then set flag= '是0';
when num<0 then set flag= '是负数';
else set flag= '不是数字';#存储过程的传入数据感觉没什么限制,加了一行
end case;#结束case是必须的
#select num;
END
call test_case(,@flag);
select @flag as flag;
if
用if解决传入的值是否是数字
CREATE PROCEDURE `test_if1`(num int,out flag varchar(20))
BEGIN
if num>0 then#num>0 可以用()括起来,也可以不用
set flag= '是正数';
elseif num=0 then
set flag= '是0';
elseif num<0 then
set flag= '是负数';
else
set flag= '不是数字';
end if;#结束if是必须的
END
call test_if1(9-8,@flag);
select @flag;
while
用while解决从0加到100的和
CREATE PROCEDURE `test_for`(num int)
BEGIN
declare i int default 0; #定义变量 先变量再类型 没有defalut是null
declare total int default 0;#定义变量
while i<=num
do set total=total+i;#赋值
set i=i+1;
end while;#结束while
select total;#显示数值
END
call test_for(100);
loop
用loop解决从0加到100的和
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_loop`(num int)
BEGIN
declare i int default 0;
declare total int default 0;
add_loop:loop #add_loop 自定义loop的名
if num<i then leave add_loop; #满足条件就结束loop
end if;
set total=total+i;
set i=i+1;
end loop; #结束这个loop
select total;
END
call test_loop(100);