MySQL-流程控制

发表于 MySQL 分类,标签: MySQL
-- 流程控制
-- if语句
-- 语法
IF 条件表达式 THEN
 SQL 语句块
 [ELSEIF 条件表达式2 THEN SQL 语句块2]...
 [ELSE SQL 语句块3]
END IF;


DELIMITER //
CREATE PROCEDURE ifdemo(IN param INT)
BEGIN
	DECLARE var1 INT;
	SET var1 = param + 1;
	IF var1 > 5 THEN 
		SELECT * FROM emp WHERE ren_name LIKE '%小';
	ELSE
		SELECT * FROM emp WHERE ren_name LIKE '威%';
	END IF
	;
END //
DELIMITER ;
CALL ifdemo(69);

-- case语句
CASE 表达式值
 WHEN 值1 THEN sql语句块1
  [WHEN 值1 THEN sql语句块2]...
  [ELSE sql语句块3]
END CASE



DELIMITER //
CREATE PROCEDURE casedemo(IN param INT)
BEGIN
	CASE param
	WHEN 1 THEN 
		UPDATE emp SET salary=salary*1.1;
	WHEN 2 THEN 
		UPDATE emp SET salary=salary*1.2;
	ELSE
		UPDATE emp SET salary=salary*1.3;
	END CASE;
END //

DELIMITER ;
CALL casedemo(3);
SELECT * FROM emp;



-- loop语句及跳转
-- loop语句用来实现简单的循环
[开始标注:]LOOP
	语句块
	END LOOP[结束标注]
-- 除非“开始标注”存在,否则“结束标注”不能被给出,并且如果两者都出现,它们必须是同样的。

LEAVE label
-- 用于从标注的流程控制构造中退出。它和begin.....end或循环一起被使用。

ITERATE lable
-- 跳过当前循环的剩下的语句,直接进入下一轮循环。
-- ITERATE 只可以出现在LOOP,REPEAT,和WHILE语句内。


DELIMITER //
CREATE PROCEDURE loopdemo(IN param INT)
BEGIN
	DECLARE su_m INT;
	SET su_m = 0;
	label1:LOOP
		SET param = param + 1;
		SET su_m = su_m+param;
		IF param < 10 THEN ITERATE label1;
		END IF;
	LEAVE label1;
	END LOOP label1;
	SELECT su_m;
END //

DELIMITER ;

CALL loopdemo(1);


0 篇评论

发表我的评论