下面讲讲关于MySQL自定义函数,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL自定义函数这篇文章你一定会有所受益。
1.自定义函数简介
自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同
自定义函数的两个必要条件:(1)参数 (2)返回值
自定义函数:
创建自定义函数
CREATE FUNCTION function_nameRETURNS{STRING|INTEGER|REAL|DECIMAL}
routine_body
关于函数体:
1.函数体可以由合法的SQL语句构成;
2.函数体可以是简单的SELECT或INSERT语句;
3.函数体如果为复合结构则使用BEGIN...END语句;
4.复合结构可以包含声明、循环、控制结构。
2.创建不带参数的自定义函数
创建日期时间为年月日点分秒格式
mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)
-> RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT f1();+-------------------------------------+| f1() |+-------------------------------------+| 2016年11月28日 08点:34分:55秒 |+-------------------------------------+
3.创建带有参数的自定义函数
创建可以计算2个数的平均值的函数
mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) -> RETURNS FLOAT(10,2) UNSIGNED -> RETURN (num1+num2)/2;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT f2(10,16);+-----------+| f2(10,16) |+-----------+| 13.00 |+-----------+
4.创建具有符合结构函数体的自定义函数
可以通过“DELIMITER 分隔符”修改MySQL中的默认结束符
删除函数:
DROP FUNCTION [IF EXISTS] function_name
如果自定义函数存在符合结构,多个语句,函数体要包含在BEGIN...END内,同时,需要通过DELIMITER将默认的结束符 ; 修改成其他符号,如:// $$ ,以免函数由于语句结尾的 ; 号导致中断
mysql> DELIMITER //mysql> CREATE FUNCTION adduser(username VARCHAR(20)) -> RETURNS INT UNSIGNED -> BEGIN
-> INSERT test(username) VALUES(username); -> RETURN LAST_INSERT_ID(); -> END
-> // mysql> DELIMITER ;
mysql> SELECT adduser('Tom');+----------------+| adduser('Tom') |+----------------+| 3 |+----------------+ mysql> SELECT adduser('Rool');+-----------------+| adduser('Rool') |+-----------------+| 4 |+-----------------+ mysql> SELECT * FROM user;+----+----------+| id | username |+----+----------+| 1 | Drive || 2 | Cve || 3 | Tom || 4 | Rool |+----+----------+
对于以上MySQL自定义函数相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。