函数与存储过程
- 相同点:都是一组实现编译好的sql语句集合
- 不同点:存储过程可以有0个返回,也可以有多个返回;函数有且仅有1个返回
存储过程适合做批量插入,批量更新,函数适合处理数据后返回一个值
函数的创建和调用
创建
语法:
create function 函数名(参数列表) returns 返回类型
begin
函数体
end
注意:
- 参数列表包含两部分:参数名和参数类型
- 函数体一定要有return语句,虽然不会报错,但是建议在最后加上return 值
- 函数体中只有一句话时,可以省略begin和end
- 使用delimiter语句设置结束标记时不需要加分号
调用、查看、删除
- 调用函数
语法:select 函数名(参数列表) - 查看函数
语法:show create function 函数名; - 删除函数
语法:drop function 函数名;
案例
- 无参:返回公司员工个数
CREATE FUNCTION fun1() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;#定义变量
SELECT COUNT(*) INTO c;#赋值
FROM employees;
RETURN c;
END $
SELECT fun1() $
如果需要返回必须自己实现定义一个局部变量或用户变量,用于存储要返回的值,然后再用return返回
- 有参数:根据员工名返回工资
SELECT FUNCTION fun2(emp_name VARCHAR(20)) RETURNS DOUBLE
BEGIN
DECLARE slr INT DEFAULT 0;
SELECT salary INTO slr
FROM employees
WHERE Last_name=emp_name;
RETURN slr;
END $
SELECT fun2('mary') $