MySQL8 存储函数

MySQL8 存储函数,MySQL8教程,介绍 MySQL8 存储函数和示例。

【全栈教程】:https://try8.cn/article
教程目录:
教程内容:
最近更新:2023-04-17

一、MySQL8 存储函数介绍

MySQL8 存储函数是一种存储对象类型,您可以使用存储函数来封装 SQL 代码,与存储过程不同,存储函数返回单个值,可用于 SQL 表达式,您可以在任意 SQL 语句中使用存储函数,这样有助于提高可读性和可维护性。


1.1、与存储过程的区别

存储函数和存储过程都是存储对象,都用于定义 SQL 集合,它们非常类似,但有如下使用区别:

  • 存储函数有且只有一个返回值,存储过程则可以有 0 个或多个返回值;
  • 存储函数只能有不加修饰符的输入参数,存储过程可以有多个 in、out、inout 参数;
  • 存储函数只能做查询和计算,不能用 insert、update、delete 或 create 语句;
  • 存储函数不能调用存储过程,存储过程可以调用存储函数或存储过程。


二、MySQL8 存储函数教程

2.1、创建存储函数

首先,我们通过编写一个简单的存储函数,来介绍存储函数的语法。

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;
  • beginend:声明存储函数的主体,您可以将 SQL 放在正文中以处理业务逻辑。


2.2、查看存储函数

# 查询运行的状态
show create function try8.try8_func;
# 查询系统表定义
select * from information_schema.routines where routine_name='try8_func';


2.3、调用存储函数

select try8_id, try8.try8_func(10) as result from try8_db;


2.4、删除存储函数

drop function if exists try8.try8_func;


2.5、修改存储函数

MySQL8 存储函数不支持修改,官方推荐的实现方式为先删除后重建。


三、MySQL8 存储函数 总结

MySQL8教程 - MySQL8 存储函数,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 存储函数概念开始,逐步到 MySQL8 存储函数示例等,通篇实用易懂,让 MySQL8 入门更加快速和简单。


《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。