MySQL数据库——存储函数(介绍、案例)

目录

介绍

案例


介绍

存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。具体语法如下:

sql 复制代码
CREATE FUNCTION 存储函数名称 ([ 参数列表 ])
RETURNS type [characteristic ...]
BEGIN

    -- SQL语句
    RETURN ...;

END ;

characteristic说明:

  • DETERMINISTIC:相同的输入参数总是产生相同的结果
  • NO SQL :不包含 SQL 语句。
  • READS SQL DATA:包含读取数据的语句,但不包含写入数据的语句。

案例

计算从1累加到n的值,n为传入的参数值。

sql 复制代码
create function fun(n int)
returns int deterministic
begin

    declare total int default 0;

    while n>0 do
        set total := total + n;
        set n := n - 1;
    end while;

    return total;

end;

当我们要执行上述定义存储函数的语句时,会出现报错,这是因为:

在mysql8.0版本中binlog默认是开启的,一旦开启了,mysql就要求在定义存储函数时,需要指定

characteristic特性,否则就会报如下错误

所以应该改为:

sql 复制代码
create function fun(n int)
returns int deterministic
begin

    declare total int default 0;

    while n>0 do
        set total := total + n;
        set n := n - 1;
    end while;

    return total;

end;

select fun(50);

需要说明的是:

存储函数使用的情况很少,因为存储函数能实现的,存储过程同样也能实现;而且,存储函数必须要有返回值。


END


学习自:黑马程序员------MySQL数据库课程

相关推荐
智能化咨询2 分钟前
SQL之参数类型讲解——从基础类型到动态查询的核心逻辑
数据库·oracle
doris82042 分钟前
使用Yum安装Redis
数据库·redis·缓存
有一个好名字6 分钟前
万字 Apache ShardingSphere 完全指南:从分库分表到分布式数据库生态
数据库·分布式·apache
dxnb228 分钟前
Datawhale25年10月组队学习:math for AI+Task3线性代数(下)
人工智能·学习·线性代数
Century_Dragon9 分钟前
【世纪龙科技】新能源汽车动力电池拆装与检测虚拟实训软件介绍
学习
w2vmany13 分钟前
postmessage xss初步学习
前端·学习·xss
峰顶听歌的鲸鱼16 分钟前
1.云计算与服务器基础
运维·服务器·笔记·云计算·学习方法
Boilermaker199224 分钟前
【Redis】哨兵与对脑裂的情况分析
数据库·redis·缓存
Kay_Liang28 分钟前
大语言模型如何精准调用函数—— Function Calling 系统笔记
java·大数据·spring boot·笔记·ai·langchain·tools
橘 日向28 分钟前
admin二维码字符过长导致显示失败问题
数据库·oracle