Mysql流程构造语句 变量定义,判断分支,循环

一 流程构造语句
    1>语法
                  分隔符 概念 用于区分过程的开始和结束的符号
       delimiter //
          /**定义存储过程**/
       //
    2变量定义
       1>全局变量 必须是show variables存在的变量
             通过自动提交变量演示
         local/session  修改了 只对当前的session有效
         global         修改了 对所有的session都有效
         1>查看变量是否支持 session或者 global
       SHOW [GLOBAL|LOCAL|SESSION] VARIABLES LIKE 'autocommit'
         2>通过变量的方式去获取
           SELECT @@autocommit
       SELECT @@session.autocommit
       SELECT @@global.autocommit
         3>设置变量
           set  @@autocommit=off     --修改session
           set  @@global.autocommit=off 或者 set global autocommit=off  --修改全局的 
      2>临时变量     
          1>session级别临时变量
                              直接使用  @变量名称 无需定义 
                set @sex='男';
          2>局部变量
              declare 变量名  类型  default 默认值
                set 变量名=值      
                SELECT 列1,列2 INTO 变量1,变量2 FROM 表 WHERE 条件
     3 if条件分支
             IF search_condition THEN statement_list
               [ELSEIF search_condition THEN statement_list] ...
               [ELSE statement_list]
           END IF;
      case分支
           sql语句中    使用case
             SELECT CASE gname
               WHEN 'aa' THEN '1501' 
               WHEN 'nn' THEN '1502' 
               END AS gradename FROM grade;
           过程语句使用    
             DELIMITER //
               CREATE PROCEDURE testdefine(sex INT)
               BEGIN
                  CASE WHEN sex=1 THEN
                    SELECT '男';
                    WHEN sex=2 THEN
                    SELECT '女';
                    ELSE
                    SELECT '未知';
                    END CASE;
               END
               //
                      
      4 循环       
       1>loop循环 
                 循环的定义:
           [begin_label:] LOOP
               statement_list
           END LOOP [end_label]
           LEAVE label
           这个语句被用来退出任何被标注的流程控制构造。它和BEGIN ... END或循环一起被使用。 
           ITERATE label
           ITERATE只可以出现在LOOP, REPEAT, 和WHILE语句内。ITERATE意思为:“再次循环。” 
                   举例 输出 1-10
            DROP PROCEDURE IF EXISTS testdefine;
               DELIMITER //
               CREATE PROCEDURE testdefine()
               BEGIN
                 SET @i=0;
                 SET @result='';
                 loc: LOOP 
                    IF(@i=10) THEN
                       LEAVE loc;
                    ELSE
                       SET @i=@i+1;
                       SET @result=CONCAT(@result,' ',@i);
                       ITERATE loc;
                    END IF;
                 
                 END LOOP;
                 SELECT @result;
               END
               //   
         2>repeat循环   
                循环的定义:
               [begin_label:] REPEAT
                   statement_list
                /**直到满足条件后就退出**/    
               UNTIL search_condition
               END REPEAT [end_label]
               举例  循环输出1-10
                   DELIMITER //
                   CREATE PROCEDURE testdefine()
                   BEGIN
                     SET @i=0;
                     SET @result='';
                     REPEAT 
                       SET @i=@i+1;
                       SET @result=CONCAT(@result,' ',@i);
                       /**知道满足条件后就退出**/
                       UNTIL @i=10
                     END REPEAT;
                     SELECT @result;
                   END
                   //
             3while循环
                     循环的定义:
                       [begin_label:] WHILE search_condition DO
                           statement_list
                       END WHILE [end_label]
 
                       举例  循环输出1-10
                           DELIMITER //
                               CREATE PROCEDURE testdefine()
                               BEGIN
                                 SET @i=0;
                                 SET @result='';
                                 WHILE(@i<10) DO
                                   SET @i=@i+1;
                                   SET @result=CONCAT(@result,' ',@i);
                                 END WHILE;
                                 SELECT @result;
                               END
                               //
原文地址:https://www.cnblogs.com/t0404/p/10291054.html