zoukankan      html  css  js  c++  java
  • 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
                                   //
  • 相关阅读:
    kbmMW 5.07.00试用笔记
    在 Andriod/IOS 程序中使用自定义字体
    【转】Delphi 10.3关于相机该注意的细节
    Delphi 10.3终于来了
    REST easy with kbmMW #17 – Database 6 – Existing databases
    【go】1环境搭建go语言介绍
    【ESSD技术解读02】企业级利器,阿里云 NVMe 盘和共享存储
    项目实战总结以及接入UAPM
    RocketMQ 5.0 POP 消费模式探秘
    Cube 技术解读 | 详解「支付宝」全新的卡片技术栈
  • 原文地址:https://www.cnblogs.com/t0404/p/10291054.html
Copyright © 2011-2022 走看看