Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser l'étiquette goto dans la fonction stockée MySQL

Il y a des cas GOTO qui ne peuvent pas être implémentés dans MySQL, comme sauter en arrière dans le code (et une bonne chose aussi).

Mais pour quelque chose comme votre exemple où vous voulez sauter de tout à une dernière série d'instructions, vous pouvez créer un bloc BEGIN / END entourant le code à sauter :

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;

Étant donné que votre code n'est que quelques IF imbriqués, la construction n'est pas nécessaire dans le code donné. Mais il est plus logique pour LOOP/WHILE/REPEAT d'éviter plusieurs instructions RETURN à l'intérieur d'une boucle et de consolider le traitement final (un peu comme TRY / FINALLY).