La gestion de la logique complexe en SQL peut être limitée sans structures procédurales.
Ces limitations entraînent souvent des inefficacités et des difficultés lors de la création de scripts SQL avancés.
PL/SQL est une extension qui enrichit SQL avec des structures de contrôle et des blocs logiques, améliorant ainsi la programmation sur Oracle.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Le langage PL/SQL (Procedural Language/Structured Query Language) est une extension procédurale du SQL dans les bases de données Oracle. Il permet d’enrichir le SQL avec des structures de contrôle, des boucles, des conditions, et des blocs de code complexes.
Le PL/SQL ajoute des fonctionnalités procédurales à SQL, permettant d’organiser le code en blocs logiques, avec des variables et des structures de contrôle.
Variables en PL/SQL Oracle
Le PL/SQL permet de déclarer des variables pour stocker des valeurs temporaires lors de l’exécution du programme. Voilà la syntaxe pour déclarer une variable :
DECLARE
my_variable VARCHAR2(50);
BEGIN
my_variable := 'Bonjour le monde alphorm’;
END;
Structures de contrôle en PL/SQL
Les structures de contrôle et les boucles en PL/SQL sont essentielles pour définir le flux d’exécution du code, permettant de prendre des décisions conditionnelles et de répéter des actions en fonction des besoins.
- Conditions avec If-Then-Else :
Cette structure conditionnelle exécute une action en fonction de la valeur d’une variable ou d’une condition :
IF my_variable = 'alphorm' THEN
-- action
ELSE
-- autre action
END IF;
Dans cet exemple, si my_variable est égal à ‘alphorm ‘, une action spécifique sera exécutée. Sinon, une autre action sera réalisée. Ce type de structure permet de contrôler le comportement du code en fonction des valeurs ou des états.
- Boucles pour répéter des actions :
Les boucles permettent d’exécuter une ou plusieurs actions plusieurs fois. Voici un exemple avec une boucle FOR qui répète l’action 10 fois :
FOR i IN 1..10 LOOP
-- action répétée
END LOOP;
Cette structure est particulièrement utile pour automatiser des tâches répétitives et gérer des données de manière séquentielle.
Procédures et fonctions PL/SQL
Les procédures, fonctions, triggers et packages sont des éléments de PL/SQL qui permettent d’organiser, structurer et réutiliser le code de manière modulaire, facilitant ainsi la maintenance et la lisibilité.
- Procédures :Permettent d’organiser et réutiliser le code sous forme de routines.
PROCEDURE my_procedure IS
BEGIN
-- actions de la procédure
END;
- Fonctions :Similaires aux procédures, mais retournent une valeur.
FUNCTION my_function RETURN NUMBER IS
BEGIN
RETURN 10;
END;
- Triggers :Exécutent automatiquement du code PL/SQL suite à des événements spécifiques (comme l’insertion de données dans une table).
- Packages :Permettent de regrouper des procédures et des fonctions pour faciliter la gestion du code.
Langage PL/SQL structuré en blocs
Le PL/SQL est structuré en blocs d’instructions logiques.
Blocs externes : Il existe des blocs anonymes ou stockés . Un bloc anonyme est un code qui n’est pas sauvegardé dans la base de données, tandis qu’un bloc stocké (procédures, fonctions ou triggers) est enregistré dans la base de données.
- Bloc anonyme :
DECLARE
my_variable NUMBER;
BEGIN
my_variable := 100;
END;
- Procédure stockée :
CREATE OR REPLACE PROCEDURE my_procedure IS
BEGIN
-- action
END my_procedure;
Architecture Oracle PL/SQL
L’architecture PL/SQL se compose de plusieurs éléments clés :
- Moteur PL/SQL :Il est responsable de l’exécution du code PL/SQL sur le serveur Oracle.
- Blocs de code :Les blocs PL/SQL sont traités par le moteur PL/SQL avant d’interagir avec la base de données.
- Gestion des exceptions :L’architecture PL/SQL comprend un mécanisme pour capturer et gérer les erreurs ou exceptions qui surviennent lors de l’exécution du code.
Programme PL/SQL : Structure
Un programme PL/SQL est composé de trois parties principales :
Partie | Description |
---|---|
Déclaration (DECLARE) | Partie où sont déclarées les variables, constantes, et autres éléments nécessaires. |
Exécution (BEGIN) | Partie principale où s’écrit la logique du programme, incluant les instructions et opérations. |
Gestion des exceptions (EXCEPTION) | Partie où les erreurs ou exceptions sont capturées et gérées pour éviter les interruptions du programme. |
Voici donc un exemple de programme qui affiche la valeur d’une variable et qui est composédes 3 parties DECLARE , BEGIN et EXCEPTION :
SET SERVEROUTPUT ON;
DECLARE
my_variable NUMBER;
BEGIN
my_variable := 100;
DBMS_OUTPUT.PUT_LINE('Valeur : ' || my_variable);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Une erreur est survenue.');
END;
Et voici son résultat lors de son exécution :
Utilisation de DBMS_OUTPUT
La procédure DBMS_OUTPUT.PUT_LINE permet d’afficher du texte dans la console, utile pour déboguer ou voir les résultats intermédiaires d’un programme, par exemple :
BEGIN
DBMS_OUTPUT.PUT_LINE('Bonjour PL/SQL');
END;
Pour afficher le contenu d’une variable :
DECLARE
my_variable VARCHAR2(50);
BEGIN
my_variable := 'Message de débogage';
DBMS_OUTPUT.PUT_LINE(my_variable);
END;
Exercice : Bloc PL/SQL pratique
Annonce de l’exercice :
Créer un bloc PL/SQL qui affiche un message personnalisé à l’utilisateur et insère une nouvelle catégorie dans une table CATEGORIES.
Partie 1 : Créez un bloc PL/SQL qui affiche le texte suivant :
Bonjour [nom de l’utilisateur] : vous êtes sur la plateforme Alphorm le [date actuelle].
Partie 2 : Créez un programme PL/SQL qui insère une nouvelle catégorie dans la table CATEGORIES avec les valeurs suivantes :
- CODE_CAT = 5
- LIBELLE_CAT = ‘Composants’
Solution :
Partie 1 : Bloc PL/SQL d’affichage
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Bonjour ' || USER || ': vous êtes sur la plateforme Alphorm le ' || SYSDATE);
END;
/
Explications :
- La commande SET SERVEROUTPUT ON active l’affichage des messages dans la console.
- Le bloc BEGIN…END exécute la logique principale.
- La fonction DBMS_OUTPUT.PUT_LINE affiche un message, combinant le nom de l’utilisateur (USER) et la date actuelle (SYSDATE).
Et voici son résultat lors de son exécution :
Partie 2 : Programme PL/SQL d’insertion
SET SERVEROUTPUT ON;
BEGIN
INSERT INTO CATEGORIES (CODE_CAT, LIBELLE_CAT) VALUES (5, 'Composants');
DBMS_OUTPUT.PUT_LINE('Insertion réussie dans la table CATEGORIES.');
END;
/
Explications :
- La commande INSERT INTO permet d’insérer une nouvelle ligne dans la table CATEGORIES.
- Nous insérons les valeurs CODE_CAT = 5 et LIBELLE_CAT = ‘Composants’.
- Le message DBMS_OUTPUT.PUT_LINE confirme l’insertion en affichant « Insertion réussie ».
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Quels sont les avantages de PL/SQL par rapport au SQL standard?
Comment déclarer des variables en PL/SQL?
Quelles sont les structures de contrôle disponibles en PL/SQL?
Qu'est-ce qu'un trigger en PL/SQL?
Pourquoi utiliser des packages en PL/SQL?
Conclusion
En maîtrisant PL/SQL, vous pouvez structurer votre code SQL pour améliorer l’efficacité et la lisibilité. Comment allez-vous intégrer ces techniques dans vos projets actuels?