Hay casos GOTO que no se pueden implementar en MySQL, como saltar hacia atrás en el código (y algo bueno también).
Pero para algo como su ejemplo en el que desea saltar de todo a una serie final de declaraciones, puede crear un bloque BEGIN / END que rodee el código para saltar:
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;
Dado que su código es solo algunos IF anidados, la construcción no es necesaria en el código dado. Pero tiene más sentido que LOOP/WHILE/REPEAT evite múltiples instrucciones RETURN desde dentro de un bucle y consolide el procesamiento final (un poco como TRY / FINALY).