一、MySQL8存储函数介绍
- MySQL8存储函数是一种存储对象类型,您可以使用存储函数来封装 SQL 代码,与存储过程不同,存储函数返回单个值,可用于 SQL 表达式,您可以在任意 SQL 语句中使用存储函数,这样有助于提高可读性和可维护性。
1.1、与存储过程的区别
存储函数和存储过程都是存储对象,都用于定义 SQL 集合,它们非常类似,但有如下使用区别:
- 存储函数有且只有一个返回值,存储过程则可以有 0 个或多个返回值;
- 存储函数只能有不加修饰符的输入参数,存储过程可以有多个 in、out、inout 参数;
- 存储函数只能做查询和计算,不能用 insert、update、delete 或 create 语句;
- 存储函数不能调用存储过程,存储过程可以调用存储函数或存储过程。
二、MySQL8存储函数教程
2.1、MySQL8创建存储函数
首先,我们通过编写一个简单的存储函数,来介绍存储函数的语法。
delimiter //
create function try8_func(try8_para int) returns varchar(50)
deterministic
begin
declare try8_result varchar(50);
IF try8_para >= 10 then
set try8_result = '10';
elseif (try8_para < 10 and try8_para > 5) then
set try8_result = '5';
elseif try8_para < 5 then
set try8_result = '0';
end if;
return (try8_result);
end //
delimiter ;
存储函数关键字说明:
- delimiter:将默认分隔符分号 ; 更改为其它符号,本例修改为 //,更改原因是为了将存储函数作为一个整体传递给服务器,而不是根据分隔符一句一句的执行,需要在存储函数最后一行还原为默认分隔符;
- create function:用于创建存储函数,该关键字后面指定存储函数的名称;
- returns:存储函数返回结果的数据类型;
- deterministic:结果确定,如果相同参数返回不确定的结果则使用 not deterministic;
- begin 和 end:声明存储函数的主体,您可以将 SQL 放在正文中以处理业务逻辑。
2.2、MySQL8查看存储函数
# 查询运行的状态
show create function try8.try8_func;
# 查询系统表定义
select * from information_schema.routines where routine_name='try8_func';
2.3、MySQL8调用存储函数
select try8_id, try8.try8_func(10) as result from try8_db;
2.4、MySQL8删除存储函数
drop function if exists try8.try8_func;
2.5、MySQL8修改存储函数
- MySQL8存储函数不支持修改,官方推荐的实现方式为先删除后重建。
三、MySQL8存储函数总结
- MySQL8教程 - MySQL8存储函数,介绍MySQL和MySQL8数据库,从MySQL8存储函数概念开始,逐步到MySQL8存储函数示例等,通篇实用易懂,让MySQL8入门更加快速和简单。
小提示:试试吧全栈教程之MySQL8教程,主打原创,定期更新,全部免费,欢迎收藏学习和转载分享。