Има случаи GOTO, които не могат да бъдат внедрени в MySQL, като прескачане назад в кода (и това също е добро).
Но за нещо като вашия пример, където искате да преминете от всичко към последна серия от изрази, можете да създадете блок 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).