第七章 自定义函数

一、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来包含

你可能感兴趣的:(第七章 自定义函数)