Procédure stockée avec des paramètres – MySQL

L’utilité des procédures stockées réside dans leur capacité à transmettre des paramètres et à permettre à la procédure stockée de gérer les différentes requêtes effectuées. Dans ce tutoriel nous allons découvrir comment passer des valeurs de paramètres à une procédure stockée.
 
 
Dans MySQL, un paramètre a l’un des trois modes suivants: IN, OUT ou INOUT.
 

Paramètres IN

IN est le mode par défaut. Lorsque vous définissez un paramètre IN dans une procédure stockée, le programme appelant doit passer un argument à la procédure stockée. En plus, la valeur d’un paramètre IN est protégée. Cela signifie que même si la valeur du paramètre IN est modifiée dans la procédure stockée, sa valeur d’origine est maintenu à la fin de la procédure stockée. En d’autres termes, la procédure stockée ne fonctionne que sur la copie du paramètre IN.
 

Paramètres OUT

La valeur d’un paramètre OUT peut être modifiée dans la procédure stockée et sa nouvelle valeur est renvoyée au programme appelant. Notez que la procédure stockée ne peut pas accéder à la valeur initiale du paramètre OUT au démarrage.
 

Paramètres INOUT

Un paramètre INOUT est une combinaison de paramètres IN et OUT. Cela signifie que le programme appelant peut passer l’argument et que la procédure stockée peut modifier le paramètre INOUT et renvoyer la nouvelle valeur au programme appelant.
 

Exemple de paramètre IN

L’exemple suivant crée une procédure stockée qui recherche tous les clients situés dans un pays spécifié par le paramètre d’entrée « p »:

DELIMITER $
CREATE PROCEDURE getClientByPays(
    IN p VARCHAR(20)
)
BEGIN
    SELECT * 
    FROM Clients
    WHERE pays = p;
END$
Delimiter ;

Dans cet exemple, « p » est le paramètre IN de la procédure stockée.
 
 
Supposons que vous souhaitiez trouver des client situés en France et que vous deviez passer un argument à la procédure stockée, comme indiqué dans la requête suivante:

CALL getClientByPays('France');

 

Exemple de paramètre OUT

La procédure suivante renvoie le nombre de commandes par statut.

DELIMITER $
CREATE PROCEDURE getCommande (
    IN s VARCHAR(20),
    OUT total INT
)
BEGIN
    SELECT SUM(TTC)
    INTO total
    FROM Commandes
    WHERE statut = s;
END$
Delimiter ;

Vous pouvez invoquer la procédure stockée pour recevoir la valeur de la variable « total », comme indiqué dans la requête suivante:

CALL getCommande('envoyer',@total);
SELECT @total;

La sortie :

225
Questions techniques sur MYSQL

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *