函数概念:
一组预编译好的sql集合,理解成批处理语句,必须有返回值。
创建函数:
create function 函数名(参数名称 参数类型)
returns 返回值类型
begin
函数体
end
参数可选 返回值必须
调用函数:
select 函数名(实参列表);
删除函数:
drop function [if exists] 函数名;
查看函数详细:
show create function 函数名;
示例 无参函数
创建函数:
/*删除函数*/
drop function if exists fun1;
/*设置结束符*/
delimiter $
/*创建函数*/
create function fun1 ()
returns INT
begin
declare max_id int default 0;
select max(id) into max_id from t_user;
return max_id;
end $
/*设置结束符;*/
delimiter ;
调用:select fun1();
示例2:有参函数
创建函数:
/*删除函数*/
DROP FUNCTION IF EXISTS get_user_id;
/*设置结束符为$*/
DELIMITER $
/*创建函数*/
CREATE FUNCTION get_user_id(v_name VARCHAR(16))
returns INT
BEGIN
DECLARE r_id int;
SELECT id INTO r_id FROM t_user WHERE name = v_name;
return r_id;
END $
/*设置结束符为;*/
DELIMITER ;
运⾏看效果:
mysql> SELECT get_user_id(name) from t_user;
存储过程和函数的区别
存储过程的关键字为procedure,返回值可以有多个,调⽤时⽤call,⼀般⽤于执⾏⽐较
复杂的的过程体、更新、创建等语句。
函数的关键字为function,返回值必须有⼀个,调⽤⽤select,⼀般⽤于查询单个值并返
回。