用户自定义函数是一种对Mysql扩展的途径,其用法与内置函数相同。
创建自定义函数
CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body
示例1(无参):
创建一个名称为get_time的自定义函数,返回当前被自定义格式格式化的时间。
CREATE FUNCTION get_time() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');
调用自定义函数。
SELECT get_time();
示例2(有参):
创建一个名称为my_avg的自定义函数,需要传入两个数字参数,返回两个数字的平均值。
CREATE FUNCTION my_avg(num1 SMALLINT UNSIGNED, num2 SMALLINT UNSIGNED) RETURNS FLOAT(10, 2) UNSIGNED RETURN (num1 + num2) / 2;
示例3(复合结构):
注:由于函数语句的结束与SQL语句的结束都为“;”分号,会产生冲突,所以我们可以通过以下方式修改SQL语句的结束符
DELIMITER $$
这样SQL语句的结束符就被修改成“$$”啦,然后开始我们自定义函数的创建。
CREATE FUNCTION add_user(name VARCHAR(20)) RETURNS INT UNSIGNED BEGIN INSERT users(name) VALUES(name); RETURN LAST_INSERT_ID(); END $$
该函数的功能为向users表添加一条数据,并返回这条数据的自增id。
调用该函数:
SELECT add_user('createdpro');
删除自定义函数:
DROP FUNCTION [IF EXISTS] function_name;