我是靠谱客的博主 温暖水壶,最近开发中收集的这篇文章主要介绍MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000‘ set message_text=‘错误信息‘MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000’ set message_text=‘错误信息’,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000’ set message_text=‘错误信息’
找了半天发现mysql好像不支持,记录一下问题解决思路:
signal sqlstate ‘HY000’ set message_text=‘错误信息’
示例
-- 学生表
create table student(
id bigint(20) primary key AUTO_INCREMENT,
name varchar(30) NOT NULL,
age int(3) NOT NULL
);
-- 插入几条数据
insert into student(name,age) values ('Tony',11);
insert into student(name,age) values ('Tom',12);
insert into student(name,age) values ('Jack',13);
insert into student(name,age) values ('Angle',18);
定义存储过程
-- 用游标循环找到最大学生年龄
DROP PROCEDURE IF EXISTS callback;
CREATE PROCEDURE callback()
BEGIN -- out BEGIN
DECLARE max_age bigint(20) default 0; -- 学生最大年龄
DECLARE cur_age bigint(20) default 0; -- 存放当前学生age
DECLARE done INT DEFAULT FALSE; -- 设置 游标终止标记
DECLARE student_cursor CURSOR FOR select age from student ; -- 定义游标 dpid_cursor 根据指定客户id
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 当找不到数据时设置标记为true 等同1
OPEN student_cursor; -- 打开游标
student_loop:LOOP
IF done=1 THEN
LEAVE student_loop;
END IF;
FETCH student_cursor INTO cur_age; -- 提取游标
IF cur_age > max_age THEN
set max_age = cur_age;
END IF;
END LOOP student_loop;
CLOSE student_cursor; -- 关闭游标
signal sqlstate 'HY000' set message_text=max_age;
END;
调用 PROCEDURE
-- 调用
call callback();
结果
输出了最大学生年龄的值,用着还不错哈
参考
参考文章
写在最后
好久没有交作业了,把欠的作业补一补,嗷呜
天下英雄出我辈,一入江湖岁月催
我是「无间行者」,努力把实践过的解决方案分享给大家
如果这篇文章对你有用,一个赞、一个评论、一个关注,我都很开心
码字不易,给点鼓励吧,让我知道你在看
最后
以上就是温暖水壶为你收集整理的MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000‘ set message_text=‘错误信息‘MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000’ set message_text=‘错误信息’的全部内容,希望文章能够帮你解决MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000‘ set message_text=‘错误信息‘MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000’ set message_text=‘错误信息’所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复