mysql 5中的store function
其中的一个叫store function的功能,和存储过程有点象,但返回的是值哦,用法挺灵活的,故介绍之
mysql> DELIMITER || mysql> CREATE FUNCTION WEIGHTED_AVERAGE (n1 INT, n2 INT, n3 INT, n4 INT) RETURNS INT DETERMINISTIC BEGIN DECLARE avg INT; SET avg = (n1+n2+n3*2+n4*4)/8; RETURN avg; END || Query OK, 0 rows affected (0.00 sec) mysql> SELECT WEIGHTED_AVERAGE(70,65,65,60)\G *************************** 1. row *************************** WEIGHTED_AVERAGE(70,65,65,60): 63 1 row in set (0.00 sec)
注意,由于MYSQL中以分号作为每行的结束,而存储过程和存储函数有很多行组成,因此,要先用delimiter ||(||可以是自定义的字符,比如可以为|等),注意,delimiter和||之间是有空格的哦,然后在结束的地方也写上 end ||匹配就可以了,
从上面可以看到,是实现对传入的四个参数求一个算术表达式的运算结果
在下面的例子中
mysql> CREATE TABLE sfdata(mark1 INT,mark2 INT,mark3 INT,mark4 INT,name VARCHAR(50)) mysql> INSERT INTO sfdata VALUES(70,65,65,60,'Mark')| mysql> INSERT INTO sfdata VALUES(95,94,75,50,'Pavlov')| mysql> CREATE FUNCTION WEIGHTED_AVERAGE2 (v1 VARCHAR(50)) RETURNS INT DETERMINISTIC BEGIN DECLARE i1,i2,i3,i4,avg INT; SELECT mark1,mark2,mark3,mark4 INTO i1,i2,i3,i4 FROM sfdata WHERE name=v1; SET avg = (i1+i2+i3*2+i4*4)/8; RETURN avg; END| Query OK, 0 rows affected (0.00 sec) mysql> SELECT WEIGHTED_AVERAGE2('Pavlov') AS Pavlov, WEIGHTED_AVERAGE2('Mark') AS Mark\G *************************** 1. row *************************** Pavlov: 67 Mark: 63 1 row in set (0.00 sec) 首先建立了一个表,然后放进两条数据,然后在调用存储函数时,传入不同的人名,然后该函数自动将该人的三个数据,放到i1,i2,i3,i4四个变量中去计算,最后分别得出他们的结果,十分容易
转载于:https://www.cnblogs.com/jackyrong/archive/2006/04/10/371359.html
mysql 5中的store function相关推荐
- mysql5.5 function_mysql 5中的store function
mysql 5中新增了视图,存储过程,触发器等新功能,其中不少资料对其都有介绍,今天看到了 其中的一个叫store function的功能,和存储过程有点象,但返回的是值哦,用法挺灵活的,故介绍之 m ...
- function在mysql里总是出错_如何在MySQL函数中引发错误
如何在MySQL函数中引发错误 我创建了一个MySQL函数,如果传递给参数的值无效,则想引发一个错误. 在MySQL函数中引发错误我有哪些选择? 6个解决方案 69 votes MySQL 5.5引入 ...
- mysql temporary_MySQL中的两种临时表
http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表.这种临时表 ...
- php mysql设计中常问_PHP开发中常见的设计模式
一.工厂模式 工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式. 使用工厂模式的好处是,如果你想要更改所实例化的类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实 ...
- mysql存储过程中as_Mysql存储过程中的delimiter
这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...
- 1亿条数据如何分表100张到Mysql数据库中(PHP)
来源:http://www.jb51.net/article/70265.htm 这篇文章主要介绍了当数据量猛增的时候如何把一亿条数据分表100张到Mysql数据库中,需要的朋友可以参考下 下面通过创 ...
- mysql字段中有逗号隔开_在MySQL字段中使用逗号分隔符
大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性.被分割的字段一定是有限而且数量较少的,我们不可能在一个字 ...
- linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法
中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...
- mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中
FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...
最新文章
- ATLAS入门篇之HoverMenuExtender控件编程(2)
- vagrant学习笔记
- iar升级芯片库_顶10个GPU!阿里巴巴重磅发布含光800芯片
- c# winform InvokeRequired 解决跨线程访问控件
- 树莓派 python spi,树莓派测试SPI-基于设备操作ioctl
- 连续两年入选Gartner公共云容器,阿里云在边缘容器方面做了什么?
- localStorage 真正的本地缓存
- Your connection is not private Attackers might be trying to steal your information from nemertes.lis
- AD7124源码 兼容AD7124-4/8 代码都经过验证 有验证的项目PCB图
- 前端两种播放视频的方式
- HPlaserjet1020打印机无法识别
- 基于tushare和python的证券市场价格分析
- spark 机器学习一 聚类算法案例小结
- 使用 Python 修改微信/QQ/支付宝运动步数
- VO、DO、DTO、PO是什么
- websocket断开重连解决方案,基于子慕大诗人博客修改 健壮强化版
- 电脑变慢,电脑突然变慢怎么办 电脑卡死原因和解决方法
- STC - 非标连接的7段数码管赋值
- 2018-3 至2018-5 菜鸟初涉
- 华为 手机 hbuilderx 连接不上手机