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;//删除存储过程和函数
发布了13 篇原创文章 · 获赞 1 · 访问量 414

猜你喜欢

转载自blog.csdn.net/qq_43775034/article/details/101752850
今日推荐