Existují případy GOTO, které nelze implementovat v MySQL, jako je skok zpět v kódu (a také dobrá věc).
Ale pro něco, jako je váš příklad, kdy chcete ze všeho skočit do poslední řady příkazů, můžete vytvořit blok BEGIN/END obklopující kód, ze kterého vyskočíte:
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;
Vzhledem k tomu, že váš kód jsou jen některé vnořené IF, konstrukce je v daném kódu zbytečná. Ale pro LOOP/WHILE/REPEAT dává větší smysl vyhnout se vícenásobným příkazům RETURN zevnitř smyčky a konsolidovat konečné zpracování (trochu jako TRY / FINALLY).