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

相关推荐
烤麻辣烫13 分钟前
JS基础
开发语言·前端·javascript·学习
techdashen16 分钟前
一个徽章坏了,顺带扯出了 2.3 万个 feature
数据库·mysql
2301_8148098618 分钟前
CSS Grid布局如何解决图片溢出网格单元_设置object-fit与网格尺寸.txt
jvm·数据库·python
red_redemption20 分钟前
自由学习记录(168)
学习·已经运行中世界-模与约束·闭环
魂梦翩跹如雨27 分钟前
数据库的“契约” —— 约束(Constrains)
java·数据库·mysql
m0_6784854529 分钟前
如何在Bootstrap中自定义Modal的弹出动画效果
jvm·数据库·python
与衫35 分钟前
[特殊字符] 解决 DataHub 无法解析复杂 SQL 血缘的问题(gsp-datahub-sidecar 实测)
数据库·sql
m0_4939345337 分钟前
CSS如何禁止子元素浮动影响父级_设置父容器BFC属性
jvm·数据库·python
weixin_5860614639 分钟前
Golang怎么安装和配置开发环境_Golang环境搭建完整教程【总结】
jvm·数据库·python
m0_493934531 小时前
html标签怎么避免标签嵌套错误_div不能放在p内原因【详解】
jvm·数据库·python