MySQL中其他等效项时出现异常

MySQL中其他等效项时出现异常,mysql,oracle,triggers,Mysql,Oracle,Triggers,我正在尝试将Oracle触发器移植到MySQL。当触发器中有其他语句时,会出现一个异常,虽然我已经为其他所有语句找到了等价的语句,但我找不到适用于此的语句。触发器类似于: IF (yada yada) THEN BEGIN SELECT a INTO generic_variable1 FROM table WHERE condition; SET ge

我正在尝试将Oracle触发器移植到MySQL。当触发器中有其他语句时,会出现一个
异常,虽然我已经为其他所有语句找到了等价的语句,但我找不到适用于此的语句。触发器类似于:

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

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

当其他人可能是DECLARE CONTINUE处理程序时,最接近异常的事情

示例(未测试):

但是您应该在可能引发异常的代码块之前声明,而不是在之后


有关完整文档,请参阅。

比尔,谢谢你的回答!:)你所说的“之前”是指在IF语句中还是之前?你能告诉我这个位置在哪里吗?谢谢我相信DECLARE和其他任何语句一样是一个语句,所以它可以在代码块或子块中的任何地方运行。但通常的惯例是将DECLARE语句放在代码块的开头,即BEGIN之后。酷!我会试试看,然后告诉你。谢谢!:)
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @generic_variable2 = 1;