十五.自定义函数
1.没有参数的自定义函数
例子:把内置的时间函数混合后做成一个不带参数的自定义函数,RETURNS后面跟的是返回值类型,RETURN后面跟的是返回值。 具体实现:
CREATE FUNCTION myTime() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点%i分%s秒');
2.创建一个计算两数平均值的函数
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED ,num2 SMALLINT UNSIGNED)
RETURNS FLOAT(10,2) //共有3位,小数部分占两位
RETURN (num1+num2)/2;
注:删除自定义函数:DROP FUNCTION f2;就是后面跟函数名就行了,不需要跟括号。
3.复合结构函数体的自定义函数
1)自定义含有复合结构函数体的函数时: 需要 修改分隔符:DELEMITER 分隔符 >DELIMITER //
2)当函数体内需要执行的是多条语句时,要使用BEGIN...END语句 且当编写函数体内容的时候,需要使用 DELIMITER 关键字将分隔符先修改为别的,否则编写语句的时候写到 ';' 的时候会直接执行,导致函数编写失败
3)DELIMITER //
CREATE FUNCTION ADD_USER(p_id SMALLINT,username VARCHAR(20))
RETURNS INT UNSIGNED
BEGIN
INSERT user(p_id,username) VALUES(p_id,username);
RETURN LAST_INSERT_ID();
END
(回复正常分隔符)删除分隔符:DELEMITER ;