Une procédure stockée est un bloc de code SQL nommé, préenregistré dans la base de données, qui peut être exécuté à la demande pour effectuer une ou plusieurs opérations logiques.
Une procédure stockée est comme une « fonction » ou un « script » installé directement dans la base de données. Une fois créée, elle peut être réutilisée depuis des applications, des outils d’administration ou d’autres procédures, sans avoir à réécrire le code SQL à chaque fois.
Elle permet de :
- Accepter des paramètres en entrée (ex. : un identifiant client, une date),
- Exécuter des opérations complexes (mises à jour multiples, calculs, validations métier, boucles, conditions),
- Retourner des résultats (sous forme de jeux de données, de valeurs de sortie ou de messages d’erreur),
- Centraliser la logique métier au plus près des données, ce qui améliore la sécurité, la performance et la maintenabilité.
Analogie simple :
Une procédure stockée, c’est comme une recette de cuisine enregistrée dans un livre. Vous donnez les ingrédients (paramètres), le livre exécute les étapes (requêtes SQL), et vous obtenez un plat (résultat ou effet).
Avantages :
- Réduction du trafic réseau (le code s’exécute côté serveur),
- Meilleure sécurité (les utilisateurs n’ont pas besoin d’accès direct aux tables),
- Optimisation des performances (le plan d’exécution est souvent mis en cache),
- Encapsulation de la logique métier (cohérence, réutilisabilité).
Exemple simple (MySQL/PostgreSQL) :
DELIMITER //
CREATE PROCEDURE ObtenirCommandesClient(IN client_id INT)
BEGIN
SELECT * FROM commandes WHERE client_id = client_id;
END //
DELIMITER ;
-- Appel
CALL ObtenirCommandesClient(123);