相关疑难解决方法(0)

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

如何在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;
Run Code Online (Sandbox Code Playgroud)

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

IF (PRICE > 500) THEN
    /*throw the error here*/
    SELECT * FROM price_greater_than_500_in_throw_exception;
END IF;
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式吗?

谢谢.

mysql stored-procedures exception

15
推荐指数
2
解决办法
3万
查看次数

如何在MySql过程中抛出错误?

什么是强制MySQL在存储过程中抛出错误的机制?

我有一个调用另一个函数的过程:

PREPARE my_cmd FROM @jobcommand;
EXECUTE my_cmd;
DEALLOCATE PREPARE my_cmd;
Run Code Online (Sandbox Code Playgroud)

job命令是:

jobq.exec("Select 1;wfdlk# to simulatte an error");
Run Code Online (Sandbox Code Playgroud)

然后:

CREATE PROCEDURE jobq.`exec`(jobID VARCHAR(128),cmd TEXT)
BEGIN
DECLARE result INT DEFAULT 0;  
SELECT sys_exec( CONCAT('echo ',cmd,' |  base64 -d > ', '/tmp/jobq.',jobID,'.sh ; bash /tmp/jobq.',jobID,'.sh &> /tmp/jobq.',jobID)) INTO result; 
IF result>0 THEN 
# call raise_mysql_error(result); 
END IF;
END;
Run Code Online (Sandbox Code Playgroud)

我的职业.exec总是成功的.有没有办法引发错误?如何实现raise_mysql_error函数?

顺便说一下,我使用的是MySQL 5.5.8

谢谢阿曼.

mysql stored-procedures stored-functions throw

11
推荐指数
2
解决办法
3万
查看次数

MySQL触发器可以模拟CHECK约束吗?

我想在MySQL中使用CHECK约束,但它不受支持.(与其他RDBMS不同,它会理解但不强制执行CHECK.)

我看过一些触发器的解决方法.但他们倾向于为相关字段设置默认值,而不是返回错误.

如果不满足条件,是否可以构造一个返回错误的触发器?

最终我想要一个复制CHECK约束的触发器.

mysql triggers constraints

10
推荐指数
3
解决办法
1万
查看次数