function在mysql里总是出错_如何在MySQL函数中引发错误
如何在MySQL函数中引发错误
我创建了一个MySQL函数,如果传递给参数的值无效,则想引发一个错误。 在MySQL函数中引发错误我有哪些选择?
6个解决方案
69 votes
MySQL 5.5引入了信号,类似于其他语言中的异常:
[http://dev.mysql.com/doc/refman/5.5/en/signal.html]
例如,在mysql命令行客户端中:
mysql> SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Custom error';
ERROR 1644 (45000): Custom error
Austin Hyde answered 2019-10-07T13:38:26Z
25 votes
它实际上是所有三个答案的组合。 您调用一个不存在的过程来引发该错误,然后声明一个退出处理程序来捕获您生成的错误。 这是一个示例,如果要删除的行设置了外键ID,则使用SQLSTATE 42000(过程不存在)在删除前引发错误:
DROP PROCEDURE IF EXISTS decount_test;
DELIMITER //
CREATE DEFINER = 'root'@'localhost' PROCEDURE decount_test ( p_id bigint )
DETERMINISTIC MODIFIES SQL DATA
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE '42000'
SELECT 'Invoiced barcodes may not have accounting removed.';
IF (SELECT invoice_id
FROM accounted_barcodes
WHERE id = p_id
) THEN
CALL raise_error;
END IF;
DELETE FROM accounted_barcodes WHERE id = p_id;
END //
DELIMITER ;
输出:
call decount_test(123456);
+----------------------------------------------------+
| Invoiced barcodes may not have accounting removed. |
+----------------------------------------------------+
| Invoiced barcodes may not have accounting removed. |
+----------------------------------------------------+
Ryan M answered 2019-10-07T13:38:54Z
7 votes
为什么不只在声明的INTEGER变量中存储VARCHAR?
DELIMITER $$ DROP FUNCTION IF EXISTS `raise_error` $$
CREATE FUNCTION `raise_error`(MESSAGE VARCHAR(255))
RETURNS INTEGER DETERMINISTIC BEGIN
DECLARE ERROR INTEGER;
set ERROR := MESSAGE;
RETURN 0;
END $$ DELIMITER ;
-- set @foo := raise_error('something failed'); -- or within a query
错误消息是:
不正确的整数值:行“ ERROR”的列“ something failed” 1个
它不是完美的,但是它给出了一个漂亮的描述性消息,您不必编写任何扩展DLL。
answered 2019-10-07T13:39:42Z
5 votes
在MySQL 5中,您可能会通过调用不存在的存储过程(CALL raise_error)或将无效值传递给查询(例如null到NOT NULL禁忌字段)来引发错误。 这是Roland Bouman撰写的有趣的帖子,内容涉及从MySQL函数中引发错误:
[http://rpbouman.blogspot.com/2005/11/using-udf-to-raise-errors-from-inside.html]
Patrick de Kleijn answered 2019-10-07T13:40:14Z
2 votes
您还可以使用无效数量的参数调用现有函数。
answered 2019-10-07T13:40:39Z
0 votes
您必须定义异常处理程序。 看看[http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html]
Jorge Niedbalski R. answered 2019-10-07T13:41:09Z
function在mysql里总是出错_如何在MySQL函数中引发错误相关推荐
- mysql里乘号怎么_如何在MySQL SELECT上将无符号整数乘以-1?
让我们首先创建一个表-mysql> create table DemoTable -> ( -> Value int -> ); 使用插入命令在表中插入一些记录-mysql&g ...
- mysql数据库存歌_如何在mysql中存储音乐和图片文件
标签: 如何在mysql中存储音乐和图片文件? 果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的! 我将告诉你怎样通过HTML表单来储存这 ...
- mysql怎么插入时间_如何在MySQL中插入日期?
在MySQL中插入日期的方法:首先打开脚本文件:然后通过[INSERT INTO tablename (col_name, col_date) VALUE ('DATE: Auto CURDATE() ...
- MySQL怎么展示表格_如何在MySQL数据库中显示表的架构?
从MySQL控制台,什么命令显示任何给定表的架构? #1楼 SHOW CREATE TABLE yourTable; 要么 SHOW COLUMNS FROM yourTable; #2楼 descr ...
- c 语言 函数返回数组_如何在C ++函数中返回数组
c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...
- 安装mysql程序运行出错_如何解决mysql安装后.net程序运行出错的问题
如何解决mysql安装后.net程序运行出错的问题 发布时间:2020-09-28 17:43:58 来源:亿速云 阅读:93 作者:小新 小编给大家分享一下如何解决mysql安装后.net程序运行出 ...
- 怎样往mysql里添加数据_怎么往mysql表里添加数据
1.我们打开Mysql命令行编辑器,连接Mysql数据库: 2.使用我们要操作的数据库,我们可以先显示一下数据库中的表: 3.显示一下表结构,了解一下表中的列: 4.向表插入数据,insert int ...
- mysql schema 保存数据_如何在mysql数据库中保存apache spark schema输出
任何人都可以告诉我,如果有任何方式在apache的火花存储在mysql数据库的JavaRDD?我从2个CSV文件中获取输入,然后在对其内容进行连接操作之后,我需要将输出(输出JavaRDD)保存在my ...
- mysql query 查询失败_如何在mysql进行查询缓存及失败的解决方法
都知道函数在使用前需要弄清楚参数的属性,这样才能对函数的使用有较好的了解.有些小伙伴学习了查询缓存后,直接进行了下一步的实战操作.这里小编想提醒大家,开始操作之前一定要先设置参数,不然就会出现问题.下 ...
最新文章
- Verilog初级教程(1)认识 Verilog HDL
- python从基础到入门电子书_python从入门进阶到大神必须看的电子书汇总
- CDH6.x Solr7.x 集成 Ik 分词
- Cloud一分钟 | 马云发表致股东的公开信;5G算什么?中国已着手研究6G相关工作...
- Visual Studio注释快捷键
- Linux 搭建zcash结点
- 维珍银河创始人布兰森成功进入太空 早于贝佐斯9天
- 信息安全完全参考手册之遵循标准、法规和法律(第三章)
- 以太坊2.0抵押地址新增13.47万ETH
- msyql 授权ip
- Andrew ng 深度学习课程笔记
- 1010 Radix (25 分) 超级坑恶魔坑
- 虚拟化应用(三)Hyper-V 2.0 初探
- VLAN Mapping实现同一网段不同VLAN的主机通信
- 正则表达式(模拟网络爬虫、网络蜘蛛)
- lfs库下载_Git上传大文件夹LFS
- 开放平台API安全设计方案
- catic备份mysql,caticbj.com
- JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库
- 情感分析学习笔记(5)——PolarityRank算法原理讲解
热门文章
- 如何在Windows 10上安装MySQL数据库服务器8.0.19
- [转载] .NET 中可以有类似 JVM 的幻像引用吗?
- springboot系列十二、springboot集成RestTemplate及常见用法
- freemarker和thymeleaf的使用样例
- 第一百八十四节,jQuery-UI,验证注册表单
- PostgreSQL高可用性、负载均衡、复制与集群方案介绍
- flash as3 socket安全服务网关(socket policy file server)
- 利用JS+Ajax实现下拉列表无刷联动,及其相关
- Firefox关闭最后一个标签页时不关闭Firefox的设置
- 对学习java的心得体会1