Det finns GOTO-fall som inte kan implementeras i MySQL, som att hoppa bakåt i kod (och bra också).
Men för något som ditt exempel där du vill hoppa ur allt till en sista serie av påståenden, kan du skapa ett BEGIN/END-block som omger koden att hoppa ur:
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;
Eftersom din kod bara är några kapslade IF, är konstruktionen onödig i den givna koden. Men det är mer meningsfullt för LOOP/WHILE/REPEAT att undvika flera RETURN-satser inifrån en loop och för att konsolidera slutbehandlingen (lite som TRY / FINALLY).