如何使用goto标签在MySQL存储功能(How to use goto label in MySQ

2019-06-25 16:09发布

我想在MySQL存储功能使用goto语句。 如何使用? 示例代码:

if (action = 'D') then
    if (rowcount > 0) then
        DELETE FROM datatable WHERE id = 2;      
    else
       SET p=CONCAT('Can not delete',@b);
       goto ret_label;
    end if;
end if;

Label: ret_label;
return 0;

Answer 1:

有不能在MySQL中实现,就像在代码向后跳GOTO例(和一件好事,太)。

但要跳出一切到最后的一系列语句像你的榜样,你可以创建围绕码跳出的BEGIN / END块:

aBlock:BEGIN
    if (action = 'D') then
        if (rowcount > 0) then
            DELETE FROM datatable WHERE id = 2;      
        else
           SET p=CONCAT('Can not delete',@b);
           LEAVE aBlock;
        end if;
    end if;
END aBlock;
return 0;

因为你的代码只是一些嵌套的IF,该结构是在给定的代码不必要的。 但它使LOOP / WHILE / REPEAT更有意义,以避免从一个循环内的多个return语句,并巩固最终处理(有点像TRY / FINALLY)。



Answer 2:

有在MySQL存储的特效没有GOTO。 你可以参考这篇文章: MySQL的::回复:goto语句



文章来源: How to use goto label in MySQL stored function