转到MySQL存储过程

时间:2013-05-26 08:04:04

标签: mysql

我想创建一个MySQL存储过程,其中包含一系列要检查的条件。

IF (a && b) then
  IF c =1 then
    IF d < e then
      check conditions 1,2,3...
    END IF
  ELSE
    check conditions 1,2,3...
  END IF
END IF

我想以这样的方式编写程序:条件1,2,3应该写成通用的,这样程序就像

IF (a && b) then
 IF c =1 then
   IF d < e then
     goto label check;
   END IF
 ELSE
   goto label check;
 END IF
END IF 

label:label check;
  check conditions 1,2,3...

由于MySQL存储过程中不存在goto,我该如何编写程序?

2 个答案:

答案 0 :(得分:0)

试试这个:

IF a AND b THEN
  IF c = 1 AND d < e OR c != 1 then
    check conditions 1,2,3...
  END IF
END IF

答案 1 :(得分:0)

我建议不要使用goto,即使可用(*)。

您的代码可以简化如下:

IF a AND b AND (c != 1 OR d < e) THEN
    check conditions
END IF

此外,混合litteral(ANDOR)布尔运算符及其符号对应项(&&||)会使您的代码看起来很奇怪(但这只是我的观点)。

只是为了避免火焰战争,是的,有时候一点点goto也不是那么糟糕,但这是一个完美的滥用goto的例子