如何在MySQL存储函数中使用goto标签
我想在MySQL中使用goto存储函数。 我如何使用? 示例代码是:如何在MySQL存储函数中使用goto标签,mysql,goto,stored-functions,Mysql,Goto,Stored Functions,我想在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;
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;
MySQL存储过程中没有GOTO。你可以参考这篇文章:
有些GOTO案例无法在MySQL中实现,比如代码向后跳(这也是一件好事) 但对于您的示例中希望跳出所有内容到最后一系列语句的情况,您可以围绕要跳出的代码创建一个开始/结束块:
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;
由于您的代码只是一些嵌套的IFs,因此在给定代码中不需要构造。但是,对于LOOP/WHILE/REPEAT来说,避免来自循环内部的多个返回语句并整合最终处理(有点像TRY/FINALLY)更有意义