mysql怎么自定义一个函数调用_MySQL自定义函数编写
需求:对于数据库中的记录,如果有两条连续的数据的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、执行结果
删除id=7的记录后,重新执行函数
总结:
函数按照预期的方式运行,得到正确的结果。具体操作过程中遇见以下困难:
1、函数编写时,每行都要顶格写,不然就会出现如下错误
运行错误:
2、需要在函数语句中添加语句:declare exit handler for not found return result;
否则出现如下错误:
mysql怎么自定义一个函数调用_MySQL自定义函数编写相关推荐
- mysql 日期时间格式化字符串_MySQL日期函数与日期转换格式化函数大全
Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) SELECT DAYOFWEEK('2016-01 ...
- mysql datediff多一天_MySQL DATEDIFF函数获取两个日期的时间间隔的方法
描述 返回两个日期之间的时间间隔. 语法 DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] ) DateDi ...
- mysql 5.5 替换字符_MySQL replace函数替换字符串语句的用法
MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪. 最近在研究CMS,在数据转换的时候需要用 ...
- mysql查询语句有点难_Mysql惯用函数,难点,注意_mysql
十一.GROUP BY对结果分组 在与AVG()函数或SUM()函数等聚合函数一起使用时,GROUP BY子句能够发挥最大的作用.GROUP BY子句可以将查询结果分组,并返回行的汇总信息.在带有GR ...
- 自定义一个虚拟机+将自定义的虚拟机创建成模板机+快速创建虚拟机
自定义虚拟机: 配置网络yum源 安装虚拟机: [root@room9pc01 images]# virt-manager cd /var/lib/libvirt/images/ qemu-img c ...
- mysql 取最后一个数字_mysql最后一个内容orm
1.复习面向对象的内容: 编程方式主要有两种:1.面向过程编程2.面向对象编程: 1.面向过程编程的思想就是根据设计要求从上到下一次进行编程.数据和逻辑是不进行分离的 2.面向对象编程:有时候我们在进 ...
- Android自定义一个对话框,完全自定义Android对话框AlertDialog的实现
Android本身封装的AlertDialog.Builder很方便易用,但如果想要自定义弹出对话框的风格,如标题字体背景元素间隔之类的,那就比较困难了. 最近我就遇到了这个问题,一个工程的界面风格全 ...
- mysql带中文日期转换_MySQL日期函数与日期转换格式化函数大全
Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) 2.WEEKDAY(date) 3.DAYOFMO ...
- mysql控制台增加一个用户_MySQL 纯命令行添加用户
创建用户: 命令: 1 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username – 你将创建的用户名, host – 指 ...
最新文章
- python闭包锁住女神的心
- PXE实现Linux的自动安装
- 最强无监督行人重识别方法 Cluster Contrast ReID
- 蚂蚁金服移动端可视化解决方案 F2 3.2 正式发布
- 2016目录怎么生成_0基础学标书编写,目录可以这样生成,不用再手动排页码了...
- 去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告
- local class cannot see outer class defined type, even if it is public
- java web过滤器
- Excel数据生成SQL insert语句
- ARM和X86功耗差别的深层原因探讨
- 使用ubuntu系统中遇到的问题及解决方案
- 常用标准库_Python入门(五):常用标准库sys和os
- 评微软裁员测试:自动化测试并不能代替人工
- SQLServer数据库日志处理
- Aircrack-ng套件_无线网卡破解
- 无线路由器连接有线路由器
- 【Mac】MAC 终端美化教程(来个全套)
- 量化投资和主观投资到底有什么区别?
- Spark Streaming与流处理
- 获取CheckedListBox选中的项