一、MySQL自定义函数简介
1.自定义函数
用户自定义函数(user-defined function, UDF)是一种对MySQL扩展的途径,其用法与内置函数相同。
函数可以返回任意类型的值,同样可以接收这些类型的参数。
2.自定义函数的两个必要条件
- (1). 参数
- (2). 返回值
3.创建自定义函数
CREATE FUNCTION function_name
RETURNS
{STRING| INTEGER| REAL| DECIMAL}
routine_body
4.关于函数体
- (1)函数体由合法的SQL语句构成;
- (2)函数体可以是简单的SELECT或INSERT语句;
- (3)函数体如果为复合结构则使用BEGIN...END语句;
- (4)复合结构可以包含声明,循环,控制结构;
example:
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();
/*Result
+-------------------------------+
| f1() |
+-------------------------------+
| 2018年04月26日 14点:30分:37秒 |
+-------------------------------+
*/
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED, num2 SMALLINT UNSIGNED)
RETURNS FLOAT(10, 2) UNSIGNED
RETURN (num1 + num2) / 2;
/*Result
+----------+
| f2(2, 3) |
+----------+
| 2.50 |
+----------+
*/
5.创建具有复合结构函数体
example:
DELIMITER //
CREATE FUNCTION adduser(username VARCHAR(20))
RETURNS INT UNSIGNED
BEGIN
INSERT test(username) VALUES(username);
RETURN LAST_INSERT_ID();
END
//
DELIMITER ;
SELECT adduser('Rose');
/*Result
+-----------------+
| adduser('Rose') |
+-----------------+
| 3 |
+-----------------+
*/
SELECT adduser('Tom');
/*Result
+----------------+
| adduser('Tom') |
+----------------+
| 4 |
+----------------+
*/
修改sql结束符
DELIMITER //
6.删除函数
DROP FUNCTION [IF EXISTS] function_name
example:
DROP FUNCTION IF EXISTS f1;
小结
- 自定义函数:简称UDF;是对MySQL扩展的一种途径
- 创建自定义函数:CREATE FUNCTION...
- 自定义函数两个必要条件
- 参数:可以有灵个或多个
- 返回值:只能有一个返回值
- 具有复合结构的函数体需要使用BEGIN...END来包含