mysql 5中的store function
mysql 5中新增了视图,存储过程,触发器等新功能,其中不少资料对其都有介绍,今天看到了
其中的一个叫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四个变量中去计算,最后分别得出他们的结果,十分容易
 
 
 

posted on 2006-04-10 15:35 jackyrong的世界 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/jackyrong/archive/2006/04/10/371359.html

mysql 5中的store function相关推荐

  1. mysql5.5 function_mysql 5中的store function

    mysql 5中新增了视图,存储过程,触发器等新功能,其中不少资料对其都有介绍,今天看到了 其中的一个叫store function的功能,和存储过程有点象,但返回的是值哦,用法挺灵活的,故介绍之 m ...

  2. function在mysql里总是出错_如何在MySQL函数中引发错误

    如何在MySQL函数中引发错误 我创建了一个MySQL函数,如果传递给参数的值无效,则想引发一个错误. 在MySQL函数中引发错误我有哪些选择? 6个解决方案 69 votes MySQL 5.5引入 ...

  3. mysql temporary_MySQL中的两种临时表

    http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表.这种临时表 ...

  4. php mysql设计中常问_PHP开发中常见的设计模式

    一.工厂模式 工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式. 使用工厂模式的好处是,如果你想要更改所实例化的类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实 ...

  5. mysql存储过程中as_Mysql存储过程中的delimiter

    这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...

  6. 1亿条数据如何分表100张到Mysql数据库中(PHP)

    来源:http://www.jb51.net/article/70265.htm 这篇文章主要介绍了当数据量猛增的时候如何把一亿条数据分表100张到Mysql数据库中,需要的朋友可以参考下 下面通过创 ...

  7. mysql字段中有逗号隔开_在MySQL字段中使用逗号分隔符

    大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性.被分割的字段一定是有限而且数量较少的,我们不可能在一个字 ...

  8. linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...

  9. mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中

    FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...

最新文章

  1. ATLAS入门篇之HoverMenuExtender控件编程(2)
  2. vagrant学习笔记
  3. iar升级芯片库_顶10个GPU!阿里巴巴重磅发布含光800芯片
  4. c# winform InvokeRequired 解决跨线程访问控件
  5. 树莓派 python spi,树莓派测试SPI-基于设备操作ioctl
  6. 连续两年入选Gartner公共云容器,阿里云在边缘容器方面做了什么?
  7. localStorage 真正的本地缓存
  8. Your connection is not private Attackers might be trying to steal your information from nemertes.lis
  9. AD7124源码 兼容AD7124-4/8 代码都经过验证 有验证的项目PCB图
  10. 前端两种播放视频的方式
  11. HPlaserjet1020打印机无法识别
  12. 基于tushare和python的证券市场价格分析
  13. spark 机器学习一 聚类算法案例小结
  14. 使用 Python 修改微信/QQ/支付宝运动步数
  15. VO、DO、DTO、PO是什么
  16. websocket断开重连解决方案,基于子慕大诗人博客修改 健壮强化版
  17. 电脑变慢,电脑突然变慢怎么办 电脑卡死原因和解决方法
  18. STC - 非标连接的7段数码管赋值
  19. 2018-3 至2018-5 菜鸟初涉
  20. 华为 手机 hbuilderx 连接不上手机

热门文章

  1. react --- render持续调用解决方案
  2. javascript --- 使用ajax与服务器进行通信
  3. javascript --- 利用节点关系访问HTML元素
  4. NDK 开发实战 - 封装 java 层 sdk 模型
  5. android自定义布局实现优惠券效果
  6. springCloud分布式事务实战(九)改造ThemeMicroService 支持分布式事务
  7. 分布式缓存的面试题9
  8. ElasticSearch的API python调用
  9. 2017网易内推编程题(判断单词):解答代码
  10. cocos2d-x3.2创建项目