我想在 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;
最佳答案
有些 GOTO 情况无法在 MySQL 中实现,例如在代码中向后跳转(这也是一件好事)。
但是对于像您的示例这样的东西,您想要跳出所有内容以跳出最后一系列语句,您可以围绕要跳出的代码创建一个 BEGIN/END block :
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)更有意义。
关于mysql - 如何在 MySQL 存储函数中使用 goto 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134300/