mysql自定义函数详解_mysql自定义函数详解

mysql自定义函数详解_mysql自定义函数详解需求:对于数据库中的记录,如果有两条连续的数据的value字段的值相同,则发邮件通知相关人员。需求分析:告警系统里面的告警检查是通过SQL来进行的,一般的SQL实现不了此功能,因此,这里可以通过函数的方式来实现。具体实现如下:1、数据表准备:tb_config_record。新建数据表脚本如下:createtabletb_config_record(idint,statusvarch…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

需求:对于数据库中的记录,如果有两条连续的数据的value字段的值相同,则发邮件通知相关人员。

需求分析:告警系统里面的告警检查是通过SQL来进行的,一般的SQL实现不了此功能,因此,这里可以通过函数的方式来实现。

具体实现如下:

1、数据表准备:tb_config_record。新建数据表脚本如下:

create table tb_config_record (id int ,status  varchar(20), value  varchar(20), updated_at datetime, updated_by varchar(20), created_at datetime, created_by varchar(20)) ;

2、数据准备。脚本如下:

insert into tb_config_record (id , status ,value ,updated_at ,updated_by , created_at , created_by) values(1,’SUCCESS’,’0′,now(),’SYS’,now(),’SYS’);

insert into tb_config_record (id , status ,value ,updated_at ,updated_by , created_at , created_by) values(2,’SUCCESS’,’1′,now(),’SYS’,now(),’SYS’);

insert into tb_config_record (id , status ,value ,updated_at ,updated_by , created_at , created_by) values(3,’SUCCESS’,’2′,now(),’SYS’,now(),’SYS’);

insert into tb_config_record (id , status ,value ,updated_at ,updated_by , created_at , created_by) values(4,’SUCCESS’,’3′,now(),’SYS’,now(),’SYS’);

insert into tb_config_record (id , status ,value ,updated_at ,updated_by , created_at , created_by) values(5,’SUCCESS’,’4′,now(),’SYS’,now(),’SYS’);

insert into tb_config_record (id , status ,value ,updated_at ,updated_by , created_at , created_by) values(6,’SUCCESS’,’6′,now(),’SYS’,now(),’SYS’);

insert into tb_config_record (id , status ,value ,updated_at ,updated_by , created_at , created_by) values(7,’SUCCESS’,’6′,now(),’SYS’,now(),’SYS’);

3、函数编写。

delimiter //

create function has_serial_status() returns integer

begin

declare val varchar(20) ;

declare tmp varchar(20)  default null ;

declare result integer default 0 ;

declare  value_serials_cursor  cursor for select value from tb_config_record where status = ‘SUCCESS’ order by id asc ;

declare exit handler for not found  return result;

open value_serials_cursor ;

loop_serials : loop

fetch value_serials_cursor into val ;

if val = tmp then

set result = 1 ;

leave loop_serials ;

else

set tmp = val ;

end if;

end loop ;

close value_serials_cursor ;

return result ;

end //

delimiter ;

4、执行结果

40417215954895d792098d316961e212.png

删除id=7的记录后,重新执行函数

cd1598a36649bbabf2316b429c6b4d64.png

总结:

函数按照预期的方式运行,得到正确的结果。具体操作过程中遇见以下困难:

1、函数编写时,每行都要顶格写,不然就会出现如下错误

6f4a15cd1407bad6dccf917a623287e8.png

运行错误:

b7001ea5c6d7a63999a92f209db0b7a9.png

2、需要在函数语句中添加语句:declare exit handler for not found  return result;

否则出现如下错误:

52b29197313bb6bb53ac4980c59bd41d.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196090.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ~按位取反_按位取反什么意思

    ~按位取反_按位取反什么意思inta=0;intb=~a;System.out.println(b);  // -1计算方法:因为整形是32位有符号补码整数表示的。因此将整形转换为二进制后为:a 十进制0二进制00000000000000000000000000000000~a的二进制1111111111111111111111111

    2022年8月15日
    11
  • PyCharm代码格式调整

    PyCharm代码格式调整PyCharm 代码格式调整前言序锦很多时候 当我们在使用编辑器的时候 遇到复制粘贴 修改别人代码等等的时候 都会遇到这个让人头疼的问题 那就是如何解决格式问题 今天就让华仔带你一起去解决这些困扰了你好久的问题吧 PyCharm 中调整代码格式 PyCharm 中代码整体缩进 以及反向缩进 pycharm 中调整代码格式首先打开 PyCharm 右上角文件

    2025年10月15日
    4
  • UVa 10054 : The Necklace 【欧拉回路】

    UVa 10054 : The Necklace 【欧拉回路】

    2022年3月6日
    57
  • 汇编指令和机器码的对应表pdf_机器码与汇编对应表

    汇编指令和机器码的对应表pdf_机器码与汇编对应表一、状态寄存器PSW(ProgramFlag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:1514131211109876543210   OFDFIFTFSFZF AF PF CF条件码:①OF(OverflowFlag)溢出标志。溢出时为1,否则置0。②SF(SignFlag)符号标志。结果为负时置1,否则置0.③ZF(ZeroFlag)零标志,运算结果为0时ZF位置1,否则…

    2022年8月30日
    2
  • pycharm gitee_pycharm上传代码到github

    pycharm gitee_pycharm上传代码到github1.查看git日志2.文件更改添加一部分信息后文件会变蓝新创建一个文件夹会提问要不要加入到Git中如果选择cancel文件夹会继续是红色的然后不加到Git仓库选择add则文件名变绿3.提交更改左键双击可以查看更改的具体信息填写提交的备注信息然后点击commit可以看到文件颜色消失下面是未push时的截图然后输入账号密码可以看到提交成功…

    2022年8月27日
    5
  • vue封装jquery修改自身以及兄弟元素的方法「建议收藏」

    vue封装jquery修改自身以及兄弟元素的方法「建议收藏」在项目中我们经常有,点击某一个元素让其自身样式发生变化,同时其兄弟元素改变的需求,最简单的就是通过Jquery来操作,但是如果需求多的话,那么我们就可以对这个方法进行封装,然后再引入使用。今天我们就来看看这个封装…目录一.引入Jquery1.下载jquery源码:2.NPM安装二.封装三.引用1.单文件应用2.全局引用四.结尾一.引入Jquery1.下载jquery源码:我们在网页中打开https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js,复制代码粘贴

    2022年10月15日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号