d4:c05

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
d4:c05 [2025/10/01 15:07] – créée dthevenotd4:c05 [2025/10/01 17:44] (Version actuelle) – [6. Bonnes pratiques professionnelles] dthevenot
Ligne 1: Ligne 1:
 ====== D4-C05 : Procédures stockées et fonctions avec MariaDB ====== ====== D4-C05 : Procédures stockées et fonctions avec MariaDB ======
 +
 +===== Ressources =====
 +
 +  * Documentation officielle [[https://dev.mysql.com/doc/dev/mysql-server/latest/stored_programs.html|MySQL : Stored Programs]]
 +  * Bonnes pratiques SQL : conventions de nommage et gestion des droits
 +    * https://dotclear.placeoweb.com/post/R%C3%A8gles-et-conventions-de-nommage-SQL
 +    * https://fr.ittrip.xyz/sql/sql-naming-conventions|
 +  * Tutoriels professionnels (Zeste de savoir, Percona, MariaDB docs).
 ===== 1. Introduction ===== ===== 1. Introduction =====
 MariaDB (comme MySQL) permet d’écrire du code SQL réutilisable grâce aux **procédures stockées** et aux **fonctions stockées.** MariaDB (comme MySQL) permet d’écrire du code SQL réutilisable grâce aux **procédures stockées** et aux **fonctions stockées.**
Ligne 45: Ligne 53:
 </code> </code>
  
-==== 3. Fonctions stockées ==== +===== 3. Fonctions stockées ===== 
- +==== Syntaxe générale ==== 
-Syntaxe générale+<code>
 DELIMITER // DELIMITER //
 CREATE FUNCTION nom_fonction(param TYPE, ...) CREATE FUNCTION nom_fonction(param TYPE, ...)
Ligne 59: Ligne 67:
 END // END //
 DELIMITER ; DELIMITER ;
 +</code>
  
 +==== Appel : ====
 +<code>SELECT nom_fonction(valeur);</code>
  
-👉 Appel : +==== Exemple simple ==== 
- +<code>
-SELECT nom_fonction(valeur); +
- +
-Exemple simple+
 DELIMITER // DELIMITER //
 CREATE FUNCTION fn_calcul_tva(prix_ht DECIMAL(10,2)) CREATE FUNCTION fn_calcul_tva(prix_ht DECIMAL(10,2))
Ligne 74: Ligne 82:
 END // END //
 DELIMITER ; DELIMITER ;
 +</code>
  
 +==== Utilisation : ====
 +<code>SELECT fn_calcul_tva(100) AS prix_ttc;</code>
  
-Utilisation : +===== 4. Gestion des erreurs =====
- +
-SELECT fn_calcul_tva(100) AS prix_ttc; +
- +
-4. Gestion des erreurs +
 On peut intercepter une erreur grâce aux handlers : On peut intercepter une erreur grâce aux handlers :
 +<code>
 DECLARE EXIT HANDLER FOR SQLEXCEPTION DECLARE EXIT HANDLER FOR SQLEXCEPTION
 BEGIN BEGIN
Ligne 90: Ligne 96:
    ROLLBACK;    ROLLBACK;
 END; END;
- +</code> 
-5. Curseurs +===== 5. Curseurs =====
 Quand une requête retourne plusieurs lignes, on peut les parcourir : Quand une requête retourne plusieurs lignes, on peut les parcourir :
 +<code>
 DECLARE c CURSOR FOR SELECT nom, prenom FROM locataire; DECLARE c CURSOR FOR SELECT nom, prenom FROM locataire;
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET fini = 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET fini = 1;
- 
 OPEN c; OPEN c;
 boucle: LOOP boucle: LOOP
Ligne 107: Ligne 111:
 END LOOP; END LOOP;
 CLOSE c; CLOSE c;
 +</code>
 +===== 6. Bonnes pratiques professionnelles =====
 +  - Nommage clair : sp_ pour procédures, fn_ pour fonctions.
 +  - Commenter chaque procédure (auteur, date, rôle, paramètres).
 +  - Centraliser la logique métier sensible dans des procédures.
 +  - Versionner les scripts SQL dans Git.
 +  - Donner des droits d’exécution sur les procédures plutôt que des droits directs sur les tables.
  
-6. Bonnes pratiques professionnelles +[[d4:A06]]
- +
-Nommage clair sp_ pour procédures, fn_ pour fonctions. +
- +
-Commenter chaque procédure (auteur, date, rôle, paramètres). +
- +
-Centraliser la logique métier sensible dans des procédures. +
- +
-Versionner les scripts SQL dans Git. +
- +
-Donner des droits d’exécution sur les procédures plutôt que des droits directs sur les tables.+
  • d4/c05.1759324079.txt.gz
  • Dernière modification : 2025/10/01 15:07
  • de dthevenot