MySQL - 如何在存储过程中抛出异常?

2024-03-16

MySQL存储过程如何产生异常?例如:

CREATE PROCEDURE SALES()
BEGIN

STATEMENT...
STATEMENT...
STATEMENT...

IF (PRICE >= 500) THEN
/** THROWS AN EXCEPTION....  
    WHAT DO TO STOP THE PROCEDURE. **/
END IF;

STATEMENT...
STATEMENT...
STATEMENT...

END;

在 MySQL 中,我认为没有办法在存储过程中引发异常,但我可以通过从不存在的表中进行选择来强制发生错误。例如:

IF (PRICE > 500) THEN
    /*throw the error here*/
    SELECT * FROM price_greater_than_500_in_throw_exception;
END IF;

有更优雅的方式吗?

Thanks.


从 MySQL 5.5 开始你可以使用SIGNAL http://dev.mysql.com/doc/refman/5.5/en/signal.html and RESIGNAL http://dev.mysql.com/doc/refman/5.5/en/resignal.html用于错误处理。在此之前,MySQL 没有办法处理错误。唯一的方法是运行错误的查询(例如插入不存在的表)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL - 如何在存储过程中抛出异常? 的相关文章

  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 未捕获 Func<> 的异常(异步)

    我有以下代码 为了进行此重现而进行了简化 显然 catch 异常块将包含更多逻辑 我有以下代码 void Main var result ExecuteAction async gt Will contain real async code
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 映射 mysql 中同一个表的多个值

    您好 我必须使用另一个表中的值 id 获取文本值 表 1 包含值 ID 表 2 包含名称和值 ID 表 1 SEVERITY OCCURENCE DETECTABILITY 2 3 4 表 2 id name value 1 Very Hi
  • Mysql 时间匹配连接

    我有两个表cpuinfo和jobinfo 我想使用这两种数据创建报告 tabes CREATE TABLE cpuinfo id int 11 NOT NULL AUTO INCREMENT usagetime datetime DEFAU
  • 从按日期时间排序的 MySQL 表中获取用户的最后一个条目

    我有一张看起来像这样的桌子 USERNAME DATA DATETIME Jhon text1 2010 06 01 16 29 43 Mike text2 2010 06 01 16 29 22 Silver text3 2010 05
  • WCF MaxReceivedMessageSize 属性未采用

    搜索了一下 没有运气 我不断得到 已超出传入消息的最大消息大小配额 65536 要增加配额 请使用相应绑定元素上的 MaxReceivedMessageSize 属性 这是有道理的 所以我进入服务器和客户端配置并进行更改 Client
  • 如果没有找到值,如何让 MySQL 中的 SUM 函数返回“0”?

    假设我在 MySQL 中有一个简单的函数 SELECT SUM Column 1 FROM Table WHERE Column 2 Test 如果没有条目Column 2 包含文本 Test 然后该函数返回NULL 而我希望它返回 0 我
  • UnknownHostException:名称或服务未知

    我正在尝试使用 com squareup okhttp 中的 OkHttpClient 从 API 返回一些数据 我遇到了一些错误 我最终能够克服这些错误 但我无法克服这个主机异常错误 并且这里似乎没有任何内容足够具体到我的情况能够解决 下
  • 向下投射通用元素类型

    public class ConfigControlBase
  • Windows 8.1 升级后 Apache 无法工作 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 今天从 Windows 8 升级到 Windows 8 1 后 Apache 不再工作 我上次从 Windows 7 升级到 Window
  • Eiffel 中的错误处理示例

    我在 Eiffel 中找不到任何实际的错误处理示例 我只找到一些例子 要么是微不足道的 要么完全忽略错误 要么将错误处理留给读者 我有兴趣了解在没有异常的情况下错误如何通过调用堆栈 例如 我想知道发送网络请求的应用程序如何通知用户在调用链中
  • ASP.NET Webform 中的异常处理

    在 ASP NET Webforms 中处理异常的首选方法是什么 你有Page Error您添加的方法 我认为 web config级别 并且当发生错误时整个站点将被重定向到该级别 这是否意味着您不应在 Web 表单应用程序中的任何位置使用
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME

随机推荐