一、前言
和存储过程
类似,函数
也可以理解为一组SQL语句的集合。但是他们之间又有区别:存储过程可以有多个0到多个返回值,所以一般用来做增加、查找和删除这类操作;而函数只能有一个返回值,所以函数更适合做处理数据,然后返回处理结果的事情。
- 关于存储过程的介绍可以查看这篇文章:存储过程
二、创建语法
create function 函数名(参数列表)returns 返回类型
begin
函数体
end
- 参数列表:参数名+参数类型
- 如果函数体只有一句SQL可以省略begin和end
- 使用命令行操作数据库时,注意要修改定界符,delimiter $,否则分号不能判断究竟是函数体语句结束还是函数结束,例如:
mysql> delimiter $
mysql> CREATE FUNCTION myAdd(x INT,y INT) RETURNS INT
-> BEGIN
-> DECLARE sum INT;
-> SET sum = x+y;
-> RETURN sum;
-> END
-> $
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;#将定界符改回分号
# 调用函数
mysql> set @sum = myAdd(10,10);
->select @sum;
+------+
| @sum |
+------+
| 20 |
+------+
三、调用语法
和存储过程不同,直接使用函数名即可,不用call调用。其中返回值直接可以用select调用显示,也可以用变量接收。
#直接调用
select myAdd(10,10);
#变量接收
set @sum = myAdd(10,10);
select @sum;