MySQL - 如何在存储过程中抛出异常? [英] MySQL - How to throw exception in stored procedure?

查看:2524
本文介绍了MySQL - 如何在存储过程中抛出异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在MySQL中存储过程中生成异常?例如:

  CREATE PROCEDURE SALES()
BEGIN

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

IF(PRICE> = 500)THEN
/ **不断的...
要停止该程序。 ** /
END IF;

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

END;

在MySQL中,我认为没有办法在存储过程中抛出异常,但是我可以强制从不存在的表中选择一个错误。例如:

  IF(PRICE> 500)THEN 
/ *在这里抛出错误* /
SELECT * FROM price_greater_than_500_in_throw_exception;
END IF;

有更优雅的方式吗?



谢谢。

解决方案

由于MySQL 5.5可以使用 SIGNAL RESIGNAL 进行错误处理。在此之前,没有办法处理MySQL中的错误。只有这样才能运行错误的查询(例如插入到非现有表中)。


How to generate an exception in the stored procedure in MySQL? For example:

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;

In MySQL I think there is no way to throw an exception in a stored procedure, but I can force an error by selecting from a non-existing table. For example:

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

Is there a more elegant way?

Thanks.

解决方案

Since MySQL 5.5 you can use SIGNAL and RESIGNAL for error handling. Prior to that there was no way to handle errors in MySQL. Only way is to run an erroneous query (for example inserting into non existing table).

这篇关于MySQL - 如何在存储过程中抛出异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆