Er zijn GOTO-gevallen die niet in MySQL kunnen worden geïmplementeerd, zoals achteruit springen in code (en maar goed ook).
Maar voor iets als uw voorbeeld, waarbij u uit alles naar een laatste reeks instructies wilt springen, kunt u een BEGIN / END-blok maken rond de code om uit te springen:
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;
Aangezien uw code slechts enkele geneste IF's is, is de constructie niet nodig in de gegeven code. Maar het is logischer voor LOOP/WHILE/REPEAT om meerdere RETURN-instructies van binnen een lus te vermijden en de uiteindelijke verwerking te consolideren (een beetje zoals TRY / FINALLY).