• 存储过程之三—语句


    一、 IF ELSE

      if else 类似选择结构的语句,类似于编程语言中的if else。语法如下:

    IF 表达式 THEN 执行语句
    [ELSEIF 表达式 THEN 执行语句]
    [ELSE 执行语句]
    END IF;

      根据分数打印等级,代码如下:

    DROP PROCEDURE IF EXISTS proc_test_statement;
    CREATE PROCEDURE proc_test_statement(
        IN num INT(11),
        OUT result VARCHAR(255)
     )
    BEGIN 
        IF(num >= 80) THEN
            SET result='优秀';
        ELSEIF (num >= 70) THEN
            SET result='良好';
        ELSEIF (num >= 60 ) THEN
            SET result='及格';
        ELSE
            SET result='不及格';
        END IF;
    END;
    
    CALL proc_test_statement(90,@n);
    SELECT @n;

       执行结果如下:

    二、 CASE

      case 类似于编程语言中的switch...case。语法如下:

    CASE 表达式
    WHEN 表达式 THEN 执行语句  
    WHEN 表达式 THEN 执行语句  
    ELSE 执行语句  
    END CASE;

       打印字母对应的等级,代码如下:

    DROP PROCEDURE IF EXISTS proc_test_case;
    CREATE PROCEDURE proc_test_case(
        IN scode VARCHAR(255), 
        OUT result VARCHAR(255)
     )
    BEGIN 
        CASE  scode
             WHEN 'A' THEN
                 SET result='优秀';
             WHEN 'B' THEN
                 SET result='良好';
             WHEN 'C' THEN
                 SET result='及格';
             ELSE
                 SET result='不及格';
         END CASE;
    END;
    
    CALL proc_test_case('D',  @result);
    SELECT @result;

      执行结果如下:

    三、 WHILE

      while语句类似于编程语言中的while语句。语法如下:

      WHILE 表达式 DO

        执行语句

      END WHILE

      从1加到某个数,代码如下:

    DROP PROCEDURE IF EXISTS proc_test_while;
    CREATE PROCEDURE proc_test_while(
        IN time int(11), 
        OUT result int(11)
     )
    BEGIN 
        DECLARE n INT DEFAULT 1;
        SET result = 0;
        WHILE (n <= time) DO
            SET result = result + n;
            SET n = n + 1;
         END WHILE;
    END;
    
    CALL proc_test_while(100, @result);
    SELECT @result;

      执行结果如下:

     四、REPEAT

      pepeat 语句类似于程序语言中的do...while语句,语法如下:

    REPEAT
    执行语句;
    UNTIL 表达式
    END REPEAT

       从1加到某个数,代码如下:

    DROP PROCEDURE IF EXISTS proc_test_pepeat;
    CREATE PROCEDURE proc_test_pepeat(
        IN time int(11), 
        OUT result int(11)
     )
    BEGIN 
        DECLARE n INT DEFAULT 1;
        SET result = 0;
        REPEAT 
                SET result = result + n;
                SET n = n + 1;
            UNTIL (n > time)
         END REPEAT;
    END;
    
    CALL proc_test_pepeat(100, @result);
    SELECT @result;

      结果如下:

    五、LOOP 及 LEAVE、ITERATE

        loop的使用 要结合leave 和 iterate。loop 标志位无条件循环,leave 类似于break 语句,跳出循环,跳出 begin end,iterate 类似于continue ,结束本次循环。

      求某个数以内的偶数和,代码如下:

  • 相关阅读:
    括号序列的dp问题模型
    粉刷匠
    木棍加工
    物流运输
    最短路图
    DP基础(线性DP)总结
    离散化
    树链剖分
    NOIP2016 “西湖边超萌小松鼠” 模拟赛
    NOI导刊 2009 提高二
  • 原文地址:https://www.cnblogs.com/always-online/p/3920449.html
Copyright © 2020-2023  润新知