mysql存储过程之if语句了解下 - Go语言中文社区

mysql存储过程之if语句了解下


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

IF expression THEN 
   statements;
END IF;

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

咱们再来看下IF ELSE语句的语法结构:

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

完事就来看IF 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语句。咱们来看下具体的执行过程:

咱们接下来使用IF ESLEIF ELSE语句和GetCustomerLevel()存储过程接受客户编号和客户级别的两个参数。首先这个GetCustomerLevel()存储过程得先从customers表中获得信用额度,完事呢,根据信用额度,它决定客户级别:PLATINUM , GOLDSILVER 。参数p_customerlevel存储客户的级别,并由调用程序使用,咱们来看下具体的sql:


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$$

确定客户级别的逻辑的流程图如下:

好啦,本次分享就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/luyaran/article/details/80968738
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-12-11 17:34:52
  • 阅读 ( 1207 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢