跳转至

流程控制

只能用于存储程序,BEGIN~END语句中

分支结构:IF

  • 语法:
    IF 表达式1 THEN 操作1
    [ELSEIF 表达式2 THEN 操作2] 
    [ELSE 操作3]
    ENF IF;
    
  • 表达式可以使用AND|OR连结

分支结构:CASE

  • 情况一
    CASE 表达式
    WHEN value1 THEN operation1|result1;
    WHEN value2 THEN operation2|result2;
    ...
    ELSE operationn|resultn;
    END [case];
    
    • 如果时放在BEGIN~END中,最后需要加上case,如果放在SELECT后,则不需要
      CASE val1
          WHEN 1 THEN SELECT 'val is 1';
          WHEN 2 THEN SELECT 'val is 2';
          ELSE SELECT 'val is other';
      END CASE;
      
  • 情况二:
    CASE
    WHEN expression1 THEN operation1|result1;
    WHEN expression2 THEN operation2|result2;
    ...
    ELSE operationn|resultn;
    END [case];
    
CASE
    WHEN val IS NULL THEN SELECT 'val is null'; 
    WHEN val < 0 THEN SELECT 'val is less than 0'; 
    WHEN val > 0 THEN SELECT 'val is greater than 0'; 
    ELSE SELECT 'val is 0';
END CASE;

循环结构:LOOP

  • LOOP内的语句一直重复执行知道循环被退出,跳出循环过程
    • 使用LEAVE字句
  • 基本格式:
    [loop_label:] LOOP
        循环执行的语句
    END LOOP [loop_label];
    
    DECLARE id INT DEFAULT 0;
    add_loop LOOP:
        SET id = id + 1;
        IF id >= 10 THEN LEAVE add_loop;
    END LOOP [add_loop];
    

循环结构:WHILE

  • WHILE语句创建一个带条件判断的循环过程
  • 基本格式:
    [while_label:] WHILE 循环条件 DO
        循环体语句
    END WHILE [while_label];
    
    BEGIN:
        DECLARE id INT DEFAULT 0;
        while_add WHILE id < 10 DO
            SET id = id + 1;
        END WHILE while_add;
    END;
    

循环结构:REPEAT

  • REPEAT语句创建一个待条件判断的循环过程
  • WHILE循环不同的时,REPEAT首先会执行一次循环,然后再进行判断
  • 基本格式
    [repeat_label:]REPEAT
        循环语句
    UNTIL 结束循环的条件表达式
    END REPEAT [repeat_label];
    
BEGIN
    DECLARE id INT DEFAULT 0;
    repeat_add REPEAT
        SET id = id + 1;
    UNTIL id >= 10
    END REPEAT repeat_add;
END; 

跳转语句:LEAVE

  • LEAVE可以用在循环语句内,或者以BEGIN~END包裹起来的程序体内,类似于break
  • 表示跳出循环或者跳出程序体的操作
  • 基本格式:LEAVE label_name;

跳转语句:ITERATE

  • ITERATE语句只能用在循环语句中,表示重新开始循环,类似于continue
  • 基本格式:ITERATE label_name;