Création de procédures stockées (Stored Procedures)

Les procédures stockées, vues, et déclencheurs sont des outils puissants dans MySQL pour encapsuler des logiques complexes, automatiser des actions, et améliorer les performances et la sécurité de la base de données. Ce chapitre explore comment créer et utiliser ces outils pour optimiser la gestion des données.

7.1 Création de procédures stockées

Une procédure stockée est un ensemble d'instructions SQL pré-compilé, stocké dans la base de données, et qui peut être exécuté à tout moment. Elle est utile pour automatiser des tâches répétitives et optimiser les performances, surtout lorsqu'il s'agit de nombreuses opérations SQL combinées.

7.1.1 Syntaxe de base pour créer une procédure stockée

Une procédure stockée est créée à l'aide de la commande CREATE PROCEDURE. Vous pouvez définir des paramètres d'entrée et de sortie, et inclure n'importe quel type d'instructions SQL dans la procédure.

Syntaxe de base :

CREATE PROCEDURE nom_procedure (param1 TYPE, param2 TYPE, ...)
BEGIN
    -- Instructions SQL ici
END;

Exemple 1 : Procédure simple sans paramètre

Cette procédure récupère les informations sur tous les clients inscrits après une certaine date.

CREATE PROCEDURE getClientsRecents()
BEGIN
    SELECT * FROM clients WHERE date_inscription > '2023-01-01';
END;

Appeler la procédure :

sqlCopier le codeCALL getClientsRecents();

7.1.2 Procédures avec paramètres

Les procédures peuvent accepter des paramètres d'entrée (IN), des paramètres de sortie (OUT), ou des paramètres d'entrée/sortie (INOUT).

  • IN : Les valeurs sont passées à la procédure.

  • OUT : Les valeurs sont renvoyées par la procédure.

  • INOUT : Les valeurs sont à la fois passées et renvoyées par la procédure.

Exemple 2 : Procédure avec un paramètre d'entrée (IN)

Cette procédure permet de récupérer les commandes d’un client spécifique en passant son identifiant en paramètre.

CREATE PROCEDURE getCommandesClient(IN idClient INT)
BEGIN
    SELECT * FROM commandes WHERE id_client = idClient;
END;

Appeler la procédure :

 CALL getCommandesClient(5);

Exemple 3 : Procédure avec paramètres d'entrée et de sortie

Cette procédure prend un identifiant de client en entrée et renvoie son nombre total de commandes via un paramètre de sortie.

CREATE PROCEDURE getTotalCommandesClient(IN idClient INT, OUT totalCommandes INT)
BEGIN
    SELECT COUNT(*) INTO totalCommandes FROM commandes WHERE id_client = idClient;
END;

Appeler la procédure et récupérer la valeur de sortie :

SET @total = 0;
CALL getTotalCommandesClient(5, @total);
SELECT @total;

Last updated