sql >> Base de Datos >  >> RDS >> Mysql

Cómo usar la etiqueta goto en la función almacenada de MySQL

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).