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 小时前
如何将excel数据快速导入数据库
数据库·excel
strongwyy2 小时前
9、nRF52xx蓝牙学习(pca10056.h学习)
单片机·嵌入式硬件·学习
每天题库2 小时前
2025 年江苏保安员职业资格考试经验分享
学习·安全·考试·题库·考证
一介草民丶3 小时前
Mysql | 主从复制的工作机制
数据库·mysql·oracle
hawk2014bj3 小时前
Ubuntu 安装 MySQL
android·mysql·ubuntu
Starry_hello world5 小时前
Linux 的准备工作
linux·笔记·有问必答
酱学编程6 小时前
redis 延迟双删
数据库·redis·缓存
viperrrrrrrrrr77 小时前
大数据学习(105)-Hbase
大数据·学习·hbase
IT _oA7 小时前
Active Directory 域服务
运维·服务器·网络·windows·笔记
袖清暮雨8 小时前
Python刷题笔记
笔记·python·算法