自定义函数
用户自定义函数(user-defined function,UDF)是一种对MySQL的扩展的途径,其用法与内置函数相同
两个必要的条件:
1.参数,可有可无
2.返回值
函数可以返回任意类型的值,同样可以接收这些类型的参数,参数数目理论为1024个。
创建一个自定义函数
CREATE FUNCTION function_name
RETURNS {STRING|INTEGER|REAL|DECIMAL}
routine_body//函数体
关于函数体
1、函数体由合法的SQL语句构成
2.可以是最简单的SELECT和INSERT语句
3.函数体如果为复合结构则使用BEGIN...END语句
4.复合结构可以包含声明,循环,控制语句
创建不带参数的自定义函数
编辑一个格式化的NOW()函数
CREATE FUNCTION f1() //创建函数名
RETURNS VARCHAR(30) //返回值
RETURN DATE_FORMAT(NOW(),'%年%m月%d日 %H点%i分%s秒');//函数体
调用函数f1()
SELECT f1();
带有两个参数的函数
计算两个数的平均值
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
RETURNS FLOAT(10,2) UNSIGNED
RETURN (num1+num2)/2;
调用f2
SELECT f2(10,15);
12.50
创建一个具有符合结构函数体的自定义函数
函数是向test表,插入记录,返回值是新插入记录的id号。test 中有两列:id和username,id是主键,自动加
首先修改分隔符
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');