MySql存储过程之逻辑判断和条件控制


Posted in MySQL onMay 26, 2021

具体详情请看下文小编给大家带来的知识点。

同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE

1、IF判断

IF判断的格式是这样的:

IF expression THEN commands 
  [ELSEIF expression THEN commands] 
  [ELSE commands] 
  END IF;

这里expression是我们的判断表达式;ELSE IF 和ELSE都是可选的;command就是当条件为真(true为1,false为0)时执行的命令。比如我们设计一个存储过程用于返回商品的价格,这里价格通过传入的参数来判断是要带税收的价格还是没有带税收的价格。先看看表的数据:

MySql存储过程之逻辑判断和条件控制

然后下面是我们的存储过程:

MySql存储过程之逻辑判断和条件控制

存储过程的话有两个输入参数,第一个isTaxed表示是不是要带税价格,第二个是产品的名称;在存储过程里面定义了两个变量,finalPrice用来保存价格,而taxRate表示税率。这里代码比较简单,就是判断下如果是要加税,就把原来的价格乘上税率。下面是测试结果:

MySql存储过程之逻辑判断和条件控制

MySql存储过程之逻辑判断和条件控制

true的情况表示是带税的价格。好了这个是使用IF的一个例子,下面看看CASE;

2、CASE的使用

同编程里面的那个switch ....case.....类似,使用CASE同编程一样也是当判断比较多时便于阅读和维护,我们也来看下CASE的语法:

CASE case_expression 
  WHEN when_expression THEN commands 
  WHEN when_expression THEN commands 
  ... 
  ELSE commands 
END CASE;

  a、这里可以看到CASE好比我们编程里面的那个switch,后面的case_expression就好比switch后面跟着的表达式;

  b、然后WHEN则类似编程里面的case,when_expression类似case后面跟着的值,commands则对应于相应的case下执行的命令;

 c、最后一个 ELSE 则类似于default,就是如果都没在上面那些WHEN里面的情况时执行的命令。


下面我们假设不同类型的商品对应的税收税率是不一样的情况来看个例子,这里假设甜点的税率是0.05,奶制品的是0.1,家具类的是0.2:,下面是存储过程:

MySql存储过程之逻辑判断和条件控制

上面增加了一个保存产品类型的一个变量proType,用来保存商品类型。然后使用CASE来进行判断来设置税率,下面是测试的部分:

可以看到沙发的价格是1250*1.2=1500,而蛋糕的价格是10*1.05 = 10.5

MySql存储过程之逻辑判断和条件控制

MySql存储过程之逻辑判断和条件控制

MySQL 相关文章推荐
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
关于k8s环境部署mysql主从的问题
Mar 13 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 MySQL
mysql sock文件存储了什么信息
Jul 15 MySQL
详解MySQL的内连接和外连接
May 08 MySQL
MYSQL主从数据库同步备份配置的方法
May 26 #MySQL
MYSQL数据库使用UTF-8中文编码乱码的解决办法
May 26 #MySQL
Mysql效率优化定位较低sql的两种方式
May 26 #MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 #MySQL
MySQL查看表和清空表的常用命令总结
May 26 #MySQL
MySQL中distinct与group by之间的性能进行比较
MySQL中distinct和count(*)的使用方法比较
May 26 #MySQL
You might like
php设计模式 Factory(工厂模式)
2011/06/26 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
python开发之函数定义实例分析
2015/11/12 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
python实现经典排序算法的示例代码
2021/02/07 Python
飞利浦法国官网:Philips法国
2019/07/10 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
医学院四年学习生活的自我评价
2013/11/06 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
建房合同协议书
2016/03/21 职场文书
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技