MySQL(完)

14.流程控制的使用(实例)

==存储过程和函数中可以使用流程控制来控制语句的执行。MySQL 中可以使用 IF 语句、CASE 语句、LOOP语句、LEAVE 语句、ITERATE 语句、REPEAT 语句和 WHILE 语句来进行流程控制==

14.1(IF语句)
DELIMITER &&//if语句
CREATE PROCEDURE pro_user5(IN bookId INT)
      BEGIN
         SELECT COUNT(*) INTO @num FROM t_user WHERE id=bookId;
         IF @num>0 THEN UPDATE t_user SET userName='java12345' WHERE id=bookId;
         ELSE
             INSERT INTO t_user VALUES(NULL,'2312312','23221312');
             END IF;
      END
      &&
DELIMITER ;
14.2(case语句)
DELIMITER &&//case语句(@+变量可当作全局常量来理解)
CREATE PROCEDURE pro_user6(IN bookId INT)
      BEGIN
         SELECT COUNT(*) INTO @num FROM t_user WHERE id=bookId;
         CASE @num
           WHEN 1 THEN UPDATE t_user SET userName='java12345' WHERE id=bookId;
           WHEN 2 THEN INSERT INTO t_user VALUES(NULL,'2312312','23221312');
           ELSE INSERT INTO t_user VALUES(NULL,'2312312123321','232213121231132');
           END CASE;
      END
      &&
DELIMITER ;
14.3 (LOOP,LEAVE 语句)

==LOOP,LEAVE语句:LOOP 语句可以使某些特定的语句重复执行,实现一个简单的循环。但是 LOOP 语句本身没有停止循环的语句,必须是遇到 LEAVE 语句等才能停止循环。==

DELIMITER &&
CREATE PROCEDURE pro_user7(IN totalNum INT)
      BEGIN
         aaa:LOOP
            SET totalNum=totalNum-1;
            IF totalNum=0 THEN LEAVE aaa;
            ELSE INSERT INTO t_user VALUES(totalNum,'2312312','23221312');
            END IF ;
         END LOOP aaa;
      END
      &&
DELIMITER ;
14.4(ITERATE 语句)

ITERATE 语句:ITERATE 语句也是用来跳出循环的语句。但是,ITERATE 语句是跳出本次循环,然后直接进入下一次循环。

DELIMITER &&(ITERATE 语句:ITERATE 语句也是用来跳出循环的语句。但是,ITERATE 语句是跳出本次循环,然后直接进入下一次循环。)
CREATE PROCEDURE pro_user8(IN totalNum INT)
      BEGIN
         aaa:LOOP
            SET totalNum=totalNum-1;
            IF totalNum=0 THEN LEAVE aaa;
            ELSEIF totalNum=3 THEN ITERATE aaa;
            END IF ;
            INSERT INTO t_user VALUES(totalNum,'2312312','23221312');
         END LOOP aaa;
      END
      &&
DELIMITER ;
14.5(REPEAT 语句)

REPEAT 语句:REPEAT 语句是有条件控制的循环语句。当满足特定条件时,就会跳出循环语句。

DELIMITER &&
CREATE PROCEDURE pro_user9(IN totalNum INT)
      BEGIN
         REPEAT
            SET totalNum=totalNum-1;
            INSERT INTO t_user VALUES(totalNum,'2312312','23221312');
            UNTIL totalNum=1
         END REPEAT ;
      END
      &&
DELIMITER ;
14.6(WHILE 语句)
DELIMITER &&//WHILE 语句
CREATE PROCEDURE pro_user10(IN totalNum INT)
      BEGIN
         WHILE totalNum>0 DO
             INSERT INTO t_user VALUES(totalNum,'2312312','23221312');
             SET totalNum=totalNum-1;
         END WHILE;
      END
      &&
DELIMITER ;
14.6 查看存储过程和函数(还可以在系统表中查看)
SHOW PROCEDURE STATUS LIKE 'pro_book';//查看存储过程和函数的状态
SHOW CREATE PROCEDURE pro_book;//语句查看存储过程的函数的定义
14.7 修改存储过程和函数
ALTER PROCEDURE pro_book COMMENT '我来测试一下comment';//修改存储过程和函数
14.8 删除存储过程和函数
DROP PROCEDURE pro_user10;//删除存储过程和函数

Author: Lelege
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Lelege !
评论
 Previous
MySQL数据库基础(下) MySQL数据库基础(下)
11.MySQL 常用函数日期和时间函数SELECT CURDATE(),CURTIME(),MONTH(birthday) AS m FROM t_data;//返回当前日期,时间,返回birthday中的月份值 字符串函数SELECT
2020-02-24
Next 
SpringBoot与消息 SpringBoot与消息
一、概述1、在大多数应用中,我们系统之间需要进行异步通信,即异步消息2、异步消息中两个重要概念: 消息代理(message broker)和目的地(destination)消息代理: 是一种在数据源与目的地之间移动数据使信息处
  TOC