MySQL自定义函数

什么是自定义函数?

用户自定义函数 user-defined function UDF是一种对MySQL扩展的途径。
自定义函数两个必要条件:(1)参数(并不是任何一个函数必备的要件)(2)返回值。
函数可以返回任意类型的值,同样可以接收这些类型的参数。

创建自定义函数

1
2
3
4
CREATE FUNCTION function_name
RETURNS
{STRING|INTEGER|REAL|DECIMAL}
routine_body

routine_body 函数体
(1)函数体由合法的SQL语句构成
(2)函数体可以是简单的SELECT或者INSERT语句
(3)函数体如果为复合结构则使用BEGIN…END语句
(4)复合结构可以包含声明,循环,控制结构

创建带参数的自定义函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE FUNCTION F1(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
RETURNS FLOAT(10,2) UNSIGNED
RETURN (NUM1+NUM2)/2;
```

### 创建含有复合结构的自定义函数
``` mysql
CREATE FUNCTION adduser(username varchar(10))
RETURNS int(10) unsigned
BEGIN
INSERT test(username) values(username);
RETURN LAST_INSERT_ID();
END;
```
DELIMITER //修改Mysql默认的命令结束分隔符
当函数体中有两个及两个以上的语句要执行,需要增加BEGIN…END 构成聚合体。

### 删除自定义函数
``` mysql
DROP FUNCTION [IF EXISTS] function_name
DROP FUNCTION F1;

DESC 表名用于获取数据表结构,show columns from 表名也是获取数据表结构的。
LAST_INSERT_ID()函数返回插入的那条记录在表中自增的那个字段的值。

执行自定义函数

1
SELECT function_name(参数)