vlambda博客
学习文章列表

MySQL(流程控制语句)

目录:

选择结构

    if函数

    if结构

    case结构

循环结构

    while

    loop

    repeat



流程控制语句大致分为 选择结构 循环结构




选择结构




if函数

功能:三目运算

语法:

if(逻辑表达式,表达式1,表达式2);

当逻辑表达式成立时执行表达式1,否则执行表达式2。



if结构

功能:实现多路选择

注意:只能用在begin...end结构体中

语法:

if 逻辑表达式 then 语句1;elseif 逻辑表达式2 then 语句2;...else 语句n;end if;



case结构

等值选择语法:

case 字段|变量|表达式 when 值 then 值|语句 when 值 then 值|语句 ...else 值|语句end;


不等值选择语法:

casewhen 逻辑表达式 then 语句1when 逻辑表达式 then 语句2...else 语句nend;





循环结构




while

语法:

while 逻辑表达式 do 循环体 end while;

注意:在do...end while中写循环体;


代码实例:

创建存储过程,输入一个值,返回1到该值的和;

delimiter $create procedure pro_sum(in input int,out total int) begin declare i int default 1;while i<=input do set sum_:=sum_+1;set i:=i+1;end while;set total:=sum_;end;$
set @result:=0;call pro_sum(2,@result);select @result;



loop

语法:

循环名称:loop; if 逻辑表达式 then   leave 循环名称; #跳出当前指定的循环,类似于Java中的break;  end if;end loop;


代码实例:

#创建存储过程DELIMITER // CREATE PROCEDURE pro_sum_loop(IN input INT,OUT total INT) BEGIN DECLARE i int DEFAULT 1; DECLARE sum_ int DEFAULT 0; a:LOOP SET sum_:=sum_+i; SET i:=i+1; IF i>input THEN LEAVE a; END IF; END LOOP; SET total:=sum_; END;//
#调用存储过程SET @result:=0; call pro_sum_loop(3,@result); select @result;



repeat

语法:

repeat 循环体 until 逻辑表达式 #当满足逻辑表达式时,跳出循环end repeat;


代码实例:

#创建存储过程DELIMITER // CREATE PROCEDURE pro_sum_repeat(IN input INT,OUT total INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE sum_ INT DEFAULT 0; REPEAT SET sum_:=sum_+1; SET i:=i+1; UNTIL i>input END REPEAT; SET total:=sum_;END;//
#调用存储过程SET @result:=0; call pro_sum_loop(3,@result); select @result;