欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql存储过程之if语句用法实例详解

程序员文章站 2023-09-27 15:33:25
本文实例讲述了mysql存储过程之if语句用法。分享给大家供大家参考,具体如下: mysql中的 if语句允许我们根据表达式的某个条件或值结果来执行一组sql语句,所以我们要在mys...

本文实例讲述了mysql存储过程之if语句用法。分享给大家供大家参考,具体如下:

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

if expression then
  statements;
end if;

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

mysql存储过程之if语句用法实例详解

咱们再来看下if else语句的语法结构:

if expression then
  statements;
else
  else-statements;
end if;

完事就来看if else语句的执行过程:

mysql存储过程之if语句用法实例详解

我们如果要基于多个表达式有条件地执行语句,则使用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()存储过程接受客户编号和客户级别的两个参数。首先这个getcustomerlevel()存储过程得先从customers表中获得信用额度,完事呢,根据信用额度,它决定客户级别:platinum , gold 和 silver 。参数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$$

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

mysql存储过程之if语句用法实例详解

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