MySQL记录存储过程执行的错误信息

embedded/2024/9/25 9:20:11/

创建业务表

CREATE TABLE `tb_user` (`id` int NOT NULL primary key,`name` varchar(255) DEFAULT NULL,`age` int DEFAULT NULL
);

创建错误日志表

CREATE TABLE error_log (error_id INT AUTO_INCREMENT PRIMARY KEY,error_code char(5),error_message text,error_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

创建存储过程,如果运行报错,插入到error_log

DELIMITER $$
drop PROCEDURE if exists insert_user;
CREATE PROCEDURE insert_user(IN name VARCHAR(255), IN age int)
beginDECLARE errcode CHAR(5) DEFAULT '00000';DECLARE errmsg TEXT;DECLARE rowcount INT DEFAULT '0';DECLARE result TEXT;-- 声明异常处理DECLARE CONTINUE HANDLER FOR SQLEXCEPTIONBEGINGET DIAGNOSTICS CONDITION 1-- 获取异常code,异常信息errcode = RETURNED_SQLSTATE, errmsg = MESSAGE_TEXT;END;INSERT INTO tb_user (`name`, age) VALUES(NAME, age);-- 检查code是否改变,如果改变表示插入异常了IF errcode = '00000' THENGET DIAGNOSTICS rowcount = ROW_COUNT;SET result = CONCAT('succeeded, row count = ',rowcount);ELSESET result = CONCAT('failed, error = ',errcode,', message = ',errmsg);END IF;-- 记录到错误日志表INSERT INTO error_log(error_code, error_message)VALUES(errcode, result);-- 输出执行结果select result;
end $$
DELIMITER ;

调用测试

CALL insert_user('John Doe', 20);

查询执行结果

select * from error_log;

参考mysql官方文档:https://dev.mysql.com/doc/refman/8.4/en/get-diagnostics.html


http://www.ppmy.cn/embedded/116548.html

相关文章

【研赛A题成品论文】24华为杯数学建模研赛A题成品论文+可运行代码丨免费分享

2024华为杯研究生数学建模竞赛A题精品成品论文已出! A题 风电场有功功率优化分配 一、问题分析 A题是一道工程建模与优化类问题,其目的是根据题目所给的附件数据资料分析风机主轴及塔架疲劳损伤程度,以及建立优化模型求解最优有功功率分配…

《重生之我在java世界做任务升级》--第一章

ps:此乃我学习《Head First Java》之后的一本心得体会,现其分享给各位行走在Java道路上的道友 第一章:进入java的世界 尊敬的java玩家,欢迎来到JavaWorld,我将根据您的外貌特征为您创建游戏角色。 一眨眼,我仿佛进入了…

QT的dropEvent函数进入不了

在使用QT想实现拖拽功能的时候,发现了dropEvent没有调用运行,遂查找原因: 首先是网上都说要在dragEnterEvent里面使用event->accept(); 但我这边在出现问题之前就已经这样做了: void CanvasView::dragEnterEvent(QDragEnterEv…

用智能码二维码zhinengma.cn做一个产品说明书

智能码与二维码产品说明书 一、引言 随着科技的快速发展,智能码和二维码已经成为我们日常生活中不可或缺的一部分。它们不仅简化了信息的传递过程,还提高了数据的安全性和可追溯性。本说明书将详细介绍如何使用智能码和二维码作为产品说明书的一部分&a…

java实现LRU 缓存

如果碰到这种题⽬先不要慌张,现在脑海⾥回忆⼀遍 LRU 的基本概念:LRU(Least Recently Used,最近最少使⽤)是⼀种缓存算法,其核⼼思想是将最近最少使⽤的缓存项移除,以便为更常 ⽤的缓存项腾出空…

C语言从头学63—学习头文件stdlib.h(二)

6、随机数函数rand() 功能:产生0~RAND_MAX 之间的随机整数。 使用格式:rand(); //无参 返回值:返回随机整数 说明: a.RAND_MAX是一个定义在stdlib.h里面的宏,表示可以产生的最大随机整数&am…

3DGS 学习笔记

解说: 街景的新视角合成对于模拟的重要性,并介绍了目前实现此目标的主流技术是神经渲染,例如神经辐射场(NeRF)和三维高斯飞溅(3DGS)。然而,在处理街景时,当前方法在与训…

计算机毕业设计之:宠物互助平台的微信小程序系统(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…