zoukankan      html  css  js  c++  java
  • MySQL 存储过程 if语句

    MySQL  存储过程 if语句

    MySQL IF语句允许您根据表达式的某个条件或值结果来执行一组SQL语句。 要在MySQL中形成一个表达式,可以结合文字,变量,运算符,甚至函数来组合。表达式可以返回TRUE,FALSENULL,这三个值之一。

    MySQL IF语句语法

    下面说明了IF语句的语法:

    IF expression THEN 
       statements;
    END IF;

    如果表达式(expression)计算结果为TRUE,那么将执行statements语句,否则控制流将传递到END IF之后的下一个语句。

    以下流程图演示了IF语句的执行过程:

    MySQL IF ELSE语句

    如果表达式计算结果为FALSE时执行语句,请使用IF ELSE语句,如下所示:

    IF expression THEN
       statements;
    ELSE
       else-statements;
    END IF;

    以下流程图说明了IF ELSE语句的执行过程:

     

    MySQL IF ELSEIF ELSE语句

    如果要基于多个表达式有条件地执行语句,则使用IF ELSEIF ELSE语句如下: 

    IF expression THEN
       statements;
    ELSEIF elseif-expression THEN
       elseif-statements;
    ...
    ELSE
       else-statements;
    END IF;

    如果表达式(expression)求值为TRUE,则IF分支中的语句(statements)将执行;如果表达式求值为FALSE,则如果elseif_expression的计算结果为TRUE,MySQL将执行elseif-expression,否则执行ELSE分支中的else-statements语句。具体流程如下

    MySQL IF语句示例

    以下示例说明如何使用IF ESLEIF ELSE语句,GetCustomerLevel()存储过程接受客户编号和客户级别的两个参数。

    首先,它从customers表中获得信用额度

    然后,根据信用额度,它决定客户级别:PLATINUM , GOLD 和 SILVER 。

    参数p_customerlevel存储客户的级别,并由调用程序使用。

    USE yiibaidb;
    
    DELIMITER $$
    
    CREATE PROCEDURE GetCustomerLevel(
        in  p_customerNumber int(11), 
        out p_customerLevel  varchar(10))
    BEGIN
        DECLARE creditlim double;
    
        SELECT creditlimit INTO creditlim
        FROM customers
        WHERE customerNumber = p_customerNumber;
    
        IF creditlim > 50000 THEN
     SET p_customerLevel = 'PLATINUM';
        ELSEIF (creditlim <= 50000 AND creditlim >= 10000) THEN
            SET p_customerLevel = 'GOLD';
        ELSEIF creditlim < 10000 THEN
            SET p_customerLevel = 'SILVER';
        END IF;
    
    END$$

    以下流程图演示了确定客户级别的逻辑

     

  • 相关阅读:
    C# 二维码 ThoughtWorks.QRCode.dll
    Asp.net生命周期
    进程和线程,多线程等使用方法
    反射的使用与定义
    《委托和事件》
    《泛型集合》
    第三课时《枚举》
    数据库字段包括数组中的每一项
    .NetCore 图片压缩
    NetCore3.0 EF修改
  • 原文地址:https://www.cnblogs.com/BlueSkyyj/p/10432963.html
Copyright © 2011-2022 走看看