MYSQL中如何退出外部IF语句

MYSQL中如何退出外部IF语句,mysql,if-statement,stored-procedures,Mysql,If Statement,Stored Procedures,如何退出外部IF语句并继续存储过程 IF (true) THEN -- do some work here IF (somethingWrong=true) THEN -- Exit from the outer IF and continue SP END IF; -- do some work here END IF; 您可以只测试相反的条件: 如果为(true),则 /*在这里做些工作*/ 如果(不是什么问题)那么 /*执行此外部IF

如何退出外部IF语句并继续存储过程

IF (true) THEN

    -- do some work here

    IF (somethingWrong=true) THEN
        -- Exit from the outer IF and continue SP
    END IF;

    -- do some work here
END IF;

您可以只测试相反的条件:

如果为(true),则
/*在这里做些工作*/
如果(不是什么问题)那么
/*执行此外部IF块中剩余的操作*/
如果结束;
如果结束;
如果您有多个这样的实例,您可能不想嵌套
IF
块:

IF (true) THEN
    /* do some work here */
    IF (NOT somethingWrong) THEN
        /* do some more work here */
        IF (NOT somethingWrong) THEN
            /* Do whatever is remaining to do in this outer IF block */
        END;
    END IF;
END IF;
SET err = 0
IF (true) THEN
    /* do some work here */
    IF (NOT err)
        /* do some more work here that maybe sets the err variable to some non-zero value */
    END IF;
    IF (NOT err)
        /* do some more work here that maybe sets the err variable non-zero */
    END IF;
    IF (NOT err)
        /* do the remaining work */
    END IF;
END IF;
。。。这可能会嵌套得很深。相反,使用一个变量(检查语法)来跟踪错误情况,并将
IF
s展平。大概是这样的:

IF (true) THEN
    /* do some work here */
    IF (NOT somethingWrong) THEN
        /* do some more work here */
        IF (NOT somethingWrong) THEN
            /* Do whatever is remaining to do in this outer IF block */
        END;
    END IF;
END IF;
SET err = 0
IF (true) THEN
    /* do some work here */
    IF (NOT err)
        /* do some more work here that maybe sets the err variable to some non-zero value */
    END IF;
    IF (NOT err)
        /* do some more work here that maybe sets the err variable non-zero */
    END IF;
    IF (NOT err)
        /* do the remaining work */
    END IF;
END IF;
您甚至可以在其中使用相同原理的一些循环:

IF (true) THEN
    /* do some work here */
    IF (NOT err)
        /* do some more work here that maybe sets the err variable to some non-zero value */
    END IF;
    IF (NOT err)
        /* do some more work here that maybe sets the err variable non-zero */
    END IF;
    WHILE (NOT err AND some_loop_condition) DO
        /* some work that needs to repeat a few times, 
           but should be interrupted when err is non-zero */
    END WHILE
    IF (NOT err)
        /* do the remaining work */
    END IF;
END IF;

按照您现在拥有代码的方式,执行将以任何方式退出外部
IF
块,无论内部条件是否为true。你到底在寻找什么?
如果(somethingherre==true),那么MySQL中就不存在
=
,你需要使用
=
来检查equals