Il y a des cas GOTO qui ne peuvent pas être implémentés dans MySQL, comme sauter en arrière dans le code (et une bonne chose aussi).
Mais pour quelque chose comme votre exemple où vous voulez sauter de tout à une dernière série d'instructions, vous pouvez créer un bloc BEGIN / END entourant le code à sauter :
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;
Étant donné que votre code n'est que quelques IF imbriqués, la construction n'est pas nécessaire dans le code donné. Mais il est plus logique pour LOOP/WHILE/REPEAT d'éviter plusieurs instructions RETURN à l'intérieur d'une boucle et de consolider le traitement final (un peu comme TRY / FINALLY).