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数据库课程

相关推荐
春风解人意1 小时前
从零开始学习嵌入式P32----网络基础之TCP
c语言·网络·学习·tcp/ip
SkyWalking中文站2 小时前
BanyanDB 0.11.0:新特性与升级指南
数据库
李帅朋2 小时前
微分基本定义笔记
人工智能·笔记·深度学习·神经网络
传奇开心果编程3 小时前
【Rust入门知识点学与练】第21课:Trait 进阶 Advanced Traits
开发语言·学习·rust
水巷石子3 小时前
备考系统架构设计师第一天
学习·架构·软考·设计·考试
₍˄·͈༝·͈˄*₎◞ ̑̑码3 小时前
MyBatis操作数据库
数据库·mybatis
是隼人4 小时前
buuctf-pwn inndy_echo(32位fmt)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
xian_wwq4 小时前
【学习笔记】深度认知系列-第16讲-提示词工程
人工智能·笔记·学习
洛阳纸贵4 小时前
MATLAB-matlab基础知识
学习·算法·matlab
Vcaker5 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习