Aller au contenu

Les procédures

Une procédure en PL/SQL est un bloc de code nommé, stocké dans la base de données, qui exécute une série d’instructions.

Elle permet de :

  • Réutiliser du code
  • Structurer un programme
  • Effectuer des traitements (insertion, mise à jour, calculs, etc.)

Une fois compilée et stockée, elle s'exécute :

  • À partir d'un autre bloc PL/SQL
  • À partir d'une ligne de commande EXECUTE

Structure

CREATE OR REPLACE PROCEDURE nom_procedure (
    param1 TYPE,
    ...
)
IS
    --Déclarations
BEGIN
    -- Instructions
END;

Exemple

Création de la procédure :

CREATE OR REPLACE PROCEDURE insererEtudiant (
    nom VARCHAR2,
    prenom VARCHAR2
)
IS
BEGIN
    INSERT INTO etudiant VALUES (
        seq_etudiant.NEXTVAL,
        nom,
        prenom);
END;

Utilisation :

BEGIN
    insererEtudiant('Beaulieu','Tom');
END;

Comparaison : Procédure VS Bloc anonyme VS Fonction

La procédure ressemble au bloc anonyme.

Toutefois, il y a des différences importantes :

Critère Procédure Bloc anonyme
Nom Oui Non
Stockage Base de données Non
Réutilisable Oui Non
Paramètres Oui Non
Utilisation Appels multiples Exécution unique
Appel dans un autre bloc Oui Non

Conclusion

Le bloc anonyme est utile pour tester rapidement ou pour un traitement unique, la procédure est utilisée pour du code réutilisable qui peut recevoir des paramètres.


Bien que la procédure ressemble aux fonctions, il existe aussi des différences importantes :

Critère Procédure Fonction
Nom Oui Oui
Stockage Base de données Base de données
Paramètres Oui Oui
Retour de valeur Pas par défaut, nécessite un paramètre spécial Obligatoire Via RETURN
Utilisable dans SELECT ❌ Non ✅ Oui
Appel dans un autre bloc Oui, seule Oui, nécessite une variable de retour
Objectif Action / traitement, sans retour Calcul / obtenir une valeur, avec retour

🧠 À retenir

  • Une procédure = action
  • Une fonction = valeur retournée
  • Un bloc anonyme = test rapide

Cas d'utilisation

Les procédures sont idéales pour :

✔ Traitements complexes

  • Mise à jour de plusieurs tables
  • Calculs avec logique conditionnelle

✔ Automatisation

  • Traitements en lot
  • Nettoyage de données

✔ Logique métier

  • Gestion d’opérations système (gestion de RAM ou autre)
  • Traitement des logs

✔ Utilisation dans une application

  • Centraliser la logique de gestion des données de la BD :

    La BD s'occupe des actions sur les données comme insertion, mise à jour, etc...

    L'application appelle la procédure au lieu d'une instruction SQL.

  • Éviter la duplication de code

    Le code est découpé en "qui fait quoi " / l'application VS la BD.

Bonnes pratiques

  • Donner des noms clairs qui débutent avec un verbe (ajouterClient, calculerTotal)
  • Gérer les erreurs le plus possible (EXCEPTION)
  • Documenter les paramètres
  • Éviter les procédures trop longues (bien découper le code)