1徘跪、IF---THEN---ELSEIF---THEN---ELSE---END IF 語句
語法
IF 條件 THEN
SQL邏輯;
ELSEIF 條件 THEN
SQL邏輯;
ELSE
SQL邏輯;
END IF;
示例
DELIMITER //
CREATE PROCEDURE procedureTest(IN score INT, OUT result VARCHAR(10))
BEGIN
IF score >= 85 THEN
SET result = '優(yōu)秀';
ELSEIF score >= 60 THEN
SET result = '及格';
ELSE
SET result = '不及格';
END IF;
END //
DELIMITER ;
執(zhí)行存儲過程
CALL procedureTest(90 ,@result);
SELECT @result;
2哈肖、CASE---WHEN---THEN---ELSE---END CASE語句
語法
CASE 參數(shù)
WHEN 值 THEN
SQL邏輯;
WHEN 值 THEN
SQL邏輯;
ELSE
SQL邏輯;
END CASE;
CASE
WHEN 條件 THEN
SQL邏輯;
WHEN 條件 THEN
SQL邏輯;
ELSE
SQL邏輯;
END CASE;
示例
DELIMITER //
CREATE PROCEDURE procedureTest(IN score INT, OUT result VARCHAR(10))
BEGIN
CASE score
WHEN 100 THEN
SET result = '優(yōu)秀';
WHEN 60 THEN
SET result = '及格';
ELSE
SET result = '不及格';
END CASE;
END //
DELIMITER ;
DELIMITER //
CREATE PROCEDURE procedureTest(IN score INT, OUT result VARCHAR(10))
BEGIN
CASE
WHEN score >= 85 THEN
SET result = '優(yōu)秀';
WHEN score >= 60 THEN
SET result = '及格';
ELSE
SET result = '不及格';
END CASE;
END //
DELIMITER ;
執(zhí)行存儲過程
CALL procedureTest(60 ,@result);
SELECT @result;
3沸久、WHILE---DO---END WHILE語句
先判定條件,如果條件為true坛缕,則執(zhí)行邏輯,否則捆昏,不執(zhí)行邏輯
語法
WHILE 條件 DO
SQL邏輯;
END WHILE;
示例
DELIMITER //
CREATE PROCEDURE procedureTest(IN score INT, OUT result VARCHAR(10))
BEGIN
WHILE score < 60 DO
SET score = score + 1;
SET result = '加分到及格';
END WHILE;
END //
DELIMITER ;
執(zhí)行存儲過程
CALL procedureTest(30 ,@result);
SELECT @result;
4赚楚、REPEAT---UNTIL---END REPEAT 語句(重復(fù)操作直到條件滿足才停止)
先執(zhí)行一次邏輯,然后判定邏輯是否滿足屡立,如果滿足直晨,則退出。如果不滿足膨俐,則繼續(xù)下
一次循環(huán)
語法
REPEAT
SQL邏輯;
UNTIL 條件
END REPEAT;
示例
DELIMITER //
CREATE PROCEDURE procedureTest(IN score INT, OUT result VARCHAR(10))
BEGIN
REPEAT
SET score = score + 1;
SET result = '加分到及格';
UNTIL score >= 60
END REPEAT;
END //
DELIMITER ;
執(zhí)行存儲過程
CALL procedureTest(30 ,@result);
SELECT @result;
5勇皇、LOOP---ITERATE---LEAVE---END LOOP 語句
ITERATE 循環(huán)體名稱:直接進(jìn)入下一次循環(huán)
LEAVE 循環(huán)體名稱:退出指定標(biāo)記的循環(huán)體(注意一定要使用 LEAVE 退出循環(huán),否則會無限執(zhí)行下去)
語法
循環(huán)體名稱:LOOP
IF 條件 THEN
SQL邏輯;
-- 直接進(jìn)入下一次循環(huán)
ITERATE 循環(huán)體名稱;
END IF;
IF 條件 THEN
SQL邏輯;
-- 退出指定標(biāo)記的循環(huán)體
LEAVE 循環(huán)體名稱;
END IF;
END LOOP;
示例
DELIMITER //
CREATE PROCEDURE procedureTest(IN score INT, OUT result VARCHAR(10))
BEGIN
loop_test:LOOP
IF score < 60 THEN
SET score = score + 1;
-- 直接進(jìn)入下一次循環(huán)
ITERATE loop_test;
END IF;
IF score >= 60 THEN
SET result = '加分到及格';
-- 退出指定標(biāo)記的循環(huán)體
LEAVE loop_test;
END IF;
END LOOP;
END //
DELIMITER ;
執(zhí)行存儲過程
CALL procedureTest(30 ,@result);
SELECT @result;