一自定义函数简介

(1)自定义函数定义

用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同。

(2)自定义函数的两个必要条件

1)参数:可以有零个或多个。

2)返回值:只能有一个返回值。

使用自定义函数的注意事项

1)所有函数都有返回值,但不一定都有参数。

2)函数的参数与返回值之间没有必然的内在联系。

3)函数可以返回任意类型的值,同样可以接收这些类型的参数。

(3)创建自定义函数

创建自定义函数的语法结构:

CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body;

(4)函数体

1)函数体由合法的SQL语句构成。

2)函数体可以是简单的SELECT或INSERT语句。

3)函数体如果为复合结构则使用BRGIN...END语句。

4)复合结构可以包含声明,循环,控制结构。

二创建不带参数的自定义函数

实例:

查看当前日期时间和格式化当前时间

SELECT NOW();

SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');

对于习惯使用日期时间的来说,我们并不习惯上面的第一个,第二个格式化后的时间我们比较认同。每次都去格

式化日期时间会比较麻烦,因此我们考虑把这个过程自定义为一个函数。

将上面的过程封装为一个函数

CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H

点:%i分:%s秒');

调用函数

SELECT f1();

三创建带有参数的自定义函数

自定义一个求两个数的平均数的函数,要求结果保留两位小数。

CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) RETURNS  FLOAT(10,2)

UNSIGNED RETURN (num1+num2)/2;

调用函数

SELECT f2(10,15);

四创建具有复合结构函数体的自定义函数

自定义一个返回最后插入数据表的记录并且返回最后一个插入的ID号的函数

USE t1;

SELECT * FROM test;

CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS  INT  UNSIGNED BEGIN INSERT

test(username) VALUES(username); RETURN LAST_INSERT_ID(); END;

上面报错的原因是MySQL语句结束符号报错,我们平常一般的MySQL语句都是以;结束,但是复合结构中包括插

入语句,查询语句等子SQL语句,而每个语句都会以;结束,因此MySQL数据库的客户端只会识别第一个;号,后面的

内容不再读取,因此造成语句出错。

我们做出以下修改:

修改语句的结束符号

DELIMITER //

创建自定义函数

CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS  INT  UNSIGNED BEGIN INSERT

test(username) VALUES(username); RETURN LAST_INSERT_ID(); END//

DELIMITER ;

调用函数

SELECT adduser('Lee');

SELECT * FROM test;

五自定义函数的查找

自定义函数的查找

SHOW FUNCTION STATUS\G;

六删除函数

删除函数的语法结构:

DROP FUNCTION [IF EXISTS] function_name;

MySQL之运算符与函数、自定义函数的更多相关文章

  1. MySQL存储过程、触发器、自定义函数、事务

    1.存储过程 MySQL中存储过程的参数中有IN.OUT.INOUT类型,但是函数的参数只能是IN类型的. “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参 ...

  2. 【mysql的编程专题⑤】自定义函数

    用户自定义函数(user-defined function,UDF) 是一种对mysql的扩展途径,其用法与内置函数相同 创建自定义函数 语法 create function function_nam ...

  3. 数据库之mysql篇(6)—— mysql常用函数函数/自定义函数

    常用函数 运算函数 我相信你都能看懂,所以以上的不再做过多解释 然后还有个,前面漏掉的between and: 意指10是否在0到20之间,如果是返回1,否则返回0 日期函数 这个要稍微注意一下参数, ...

  4. MySQL全面瓦解18:自定义函数

    定义 我们之前学习了MySQL的内置函数,非常丰富,满足了我们对数据操作的大部分需求. 但是如果有一些复杂的业务逻辑在数据库层面就可以完成,无需在程序层面完成的时候,这时候就可以写成MySQL自定义函 ...

  5. Python学习(五)函数 —— 自定义函数

    Python 自定义函数 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print()等.也可以创建用户自定义函数. 函数定义 函数定义的简单规则: 函数代码块以de ...

  6. MySQL的存储函数(自定义函数)的定义和使用方法

    存储函数 什么是存储函数: 封装一段sql代码,完成一种特定的功能,返回结果. 存储函数的语法:  create function 函数([函数参数[,….]]) Returns 返回类型 Begin ...

  7. 给MySQL增加mysql-udf-http和mysql-udf-json自定义函数,让MySQL有调用http接口和查询直接回JSON的能力

    1.安装mysql-udf-httpyum install -y libcurl*下载地址:http://pan.baidu.com/s/1nuYZqR3tar zxvf mysql-udf-http ...

  8. mysql 报错之创建自定义函数

    I experienced this error while trying to alter one of my stored procedures remotely on a master serv ...

  9. python【内置函数&自定义函数】

    =========================random函数:=======================

  10. Mysql - 存储过程/自定义函数

    在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

随机推荐

  1. PS1应用之——修改linux终端命令行各字体颜色

    最近在学习linux操作系统(CentOS 6 & CentOS 7).觉得linux终端命令行全部为白色,会经常导致命令与输出内容难以分辨.于是上网找到修改linux终端命令行颜色的方法,发 ...

  2. activemq的几种基本通信方式总结

    简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...

  3. MySQL临时表创建

    和SQL SERVER 创建临时表不同 不能直接写 Create table #Test_Table 而是需要在 Create 和 table 之间 加入 TEMPORARY(temporary< ...

  4. socket关联查询

    反向代理服务器面对用户请求和后端服务器响应,需要将两者联系起来,于是就涉及到socket关联查询了. 代理服务器处理用户的请求和后端服务器的响应,并且这两方的请求和响应是相互对应的,因此对于代理接收到 ...

  5. tomcat日志文件定时清理备份

    以下脚本主要备份的日志文件为tomcat的catalina.out.localhost_access_log.yyyy-mm-dd.log日志和项目的日志文件,其中项目的日志文件格式为"pr ...

  6. CSS背景 顶上 顶下之类详解

    background: url(../images/img17.jpg)no-repeat 0px opx ; 背景的第一个属性石左右值,第二个数字是上下值 举个案例,比如图片只有1400宽300高, ...

  7. SQL Server 的表数据简单操作

    --表数据操作----添加表数据----向现有表添加数据--[use 要操作数据表的数据库名称go]insert [into] 数据表 [(字段名1,字段名2,字段名3, ...)] values(值 ...

  8. 泛微OA7.0下载7.1下载

    找了很久才找到,顺便发出来给需要的朋友. http://pan.baidu.com/s/1dD8mSRf

  9. Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用

    上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx ...

  10. 通用Hibernate DAO类(包括分页)

    package com.jronline.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.S ...