Mysql 流程控制

Mysql 流程控制語句

IF語句

IF search_condition THENstatement_list
[ELSEIF search_condition THEN ``statement_list] ...
[
ELSEstatement_list]
END IF“`

if-then-elseif-then-else-end if; 這裏就不囉嗦了!

CASE語句

CASE case_value
WHEN when_value THENstatement_list
[WHEN when_value THEN statement_list] …
[ELSE statement_list]
END CASE
使用場景:比較對象case_value值與分支的值相同
Or:

CASE
WHEN search_condition THENstatement_list
[WHEN search_condition THEN statement_list] …
[ELSE statement_list]
END CASE

使用場景:滿足when 條件的分支表達式不確定

LOOP循環語句

[begin_label:] LOOP
statement_list
END LOOP [end_label]

loop -leave-end loop

REPEAT循環語句

[begin_label:] REPEAT
statement_list
UNTIL search_condition
END REPEAT [end_label]

WHILE語句

[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]

– 個人建議使用常見的

代碼案例

DROP PROCEDURE IF EXISTS procedure_function;
CREATE PROCEDURE procedure_function (in inputparam VARCHAR(64))
BEGIN

    DECLARE tableName VARCHAR(64) DEFAULT '';
    DECLARE tableId BIGINT(64) DEFAULT 0;
    DECLARE num BIGINT(64) UNSIGNED   DEFAULT 5;

  -- IF
  IF num > 1 THEN 

    SELECT * FROM t_bversion ;
    SET num = num - 3;
  ELSE
    SELECT * FROM t_iteration;
  END IF;

  -- CASE
  CASE  num 
    WHEN 1 THEN 
            SELECT CONCAT('NUM1=',num);
    WHEN 3 THEN 
            SELECT CONCAT('NUM3=',num);
    ELSE
            SELECT CONCAT('NUM=',num);
  END CASE;

  CASE 
     WHEN num > 0 AND num < 2 THEN 
        SELECT CONCAT('表達式不確定');
                SELECT CONCAT('列表不確定');
    WHEN num = 0 OR num = 2 THEN
                SELECT CONCAT('NUM=',num);
    ELSE
        SELECT CONCAT('other=',num);
  END CASE;

  -- LOOP 
    lable:LOOP 

    SET num = num -1;
        SELECT CONCAT('Loop循環',num);
    IF num != 0 THEN 
            ITERATE lable; -- 繼續循環
    END IF;
        LEAVE lable;     -- 跳出循環

    END LOOP lable;

      -- REPEAT
        SET num = 3;
        REPEAT 
            SELECT CONCAT('REPEAT循環',num);
             SET num = num -1;
        UNTIL num = 0     -- 爲真跳出
        END REPEAT; 

        -- WHILE
        SET num = 5;
        WHILE num < 0 DO -- 爲真循環
             SELECT CONCAT('while循環',num);
             SET num = num -1;
        END WHILE;

END;

CALL procedure_function(NULL);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章