自定义函数(user-defined function,UDF)
函数体:
* 函数体由合法的SQL语句构成
* 函数体可以是简单的SELECT或INSERT语句
* 函数体如果复合结构则使用BEGIN…END语句
* 复合结构可以包含声明,循环,控制结构
创建函数
- 不带参数
CREATE FUNCTION f1() RETURNS VARCHAR(30)
RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H时%i分%s秒');
SELECT f1();`
f1()即为我们自定义的函数
- 带参数
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
RETURNS FLOAT(10,2) UNSIGNED
RETURN num1/num2;
SELECT f2(6,3);
- 带有复合结构的函数
# 创建测试表
CREATE TABLE test(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL);
# 创建方法
CREATE FUNCTION addUser(username VARCHAR(20))
RETURNS INT UNSIGNED
BEGIN
INSERT test(name) VALUES(username);
RETURN LAST_INSERT_ID();
END
# 调用方法
SELECT addUser('robert');
# 查看刚才插入的数据
SELECT * from test;
删除函数
DROP FUNCTION [IF EXISTS] <function_name>
;