2

我正在尝试将 Oracle 触发器移植到 MySQL。触发器中有一个EXCEPTION WHEN OTHERS语句,虽然我找到了其他所有内容的等效语句,但我找不到这个。触发器类似于:

IF (yada yada)
    THEN
        BEGIN
            SELECT a
            INTO generic_variable1
            FROM table
            WHERE condition;
            SET generic_variable2 = value1;
     EXCEPTION WHEN OTHERS --this part needs to be replaced by valid MySQL syntax
        SET generic_variable2 = value2;
  END;
END IF;

如何将该部分转换为 MySQL?

4

1 回答 1

6

您应该了解,与 Oracle 相比,MySQL 的存储过程/触发器语言非常有限。在移植到 MySQL 时,许多 Oracle 用户一遍又一遍地说,“我不敢相信 MySQL 不能做 X!!!!”

最接近 EXCEPTION WHEN OTHERS 可能是 DECLARE CONTINUE HANDLER。

示例(未测试):

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @generic_variable2 = 1;

但是你会在可能抛出异常的代码块之前声明,而不是之后。

有关完整文档,请参阅http://dev.mysql.com/doc/refman/5.5/en/declare-handler.html

于 2013-02-14T19:58:32.160 回答