INTRODUCTION
Le PL/SQL (Procedural Language/Structured Query Language) est un langage de
programmation développé par Oracle pour compléter SQL. Grâce à ses
fonctionnalités procédurales, il permet une manipulation efficace des données et
une automatisation des processus liés aux bases de données Oracle. Cet exposé
se concentrera sur sa définition, ses avantages, ses applications pratiques et ses
raisons d'être choisies pour les bases Oracle.
. Définition
Qu'est-ce que le PL/SQL ?
PL/SQL est une extension procédurale du standard SQL. Il permet d'incorporer
des éléments de programmation structurés tels que des boucles, des conditions,
des procédures, des fonctions, et la gestion des exceptions dans les bases Oracle.
Caractéristiques essentielles :
• Structure basée sur des blocs : PL/SQL organise le code en blocs, chacun
ayant une partie déclarative, une partie exécutable et une partie de gestion
des exceptions.
• Intégration totale avec SQL : PL/SQL peut exécuter des commandes
SQL tout en offrant des outils pour un traitement plus complexe
Exemple d'un bloc PL/SQL :
DECLARE
v_name VARCHAR2(50);
BEGIN
SELECT employee_name INTO v_name
FROM employees
WHERE employee_id = 101;
DBMS_OUTPUT.PUT_LINE('Nom de l\'employé : ' || v_name);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Aucun employé trouvé avec cet ID.');
END;
Ce bloc récupère et affiche le nom d'un employé selon son ID. Si aucun résultat
n'est trouvé, une exception est gérée.
Historique et objectifs
• Historique : PL/SQL a été introduit pour la première fois avec Oracle
Database 7 en 1990.
• Objectifs :
o Répondre aux limites de SQL en ajoutant des outils procéduraux.
o Réduire la dépendance entre les applications externes et la base de
données en centralisant les traitements dans Oracle.
Avantages du PL/SQL
Extensibilité par rapport au standard SQL
• Ajout de concepts procéduraux : PL/SQL introduction des outils comme
les boucles, les structures conditionnelles ( IF-THEN-ELSE), les modules
réutilisables (procédures et fonctions).
• Modularité : Le code peut être encapsulé dans des procédures et des
fonctions réutilisables pour réduire les redondances.
Exemple : Procédure pour calculer des primes
CREATE OR REPLACE PROCEDURE calculer_prime (
p_employee_id IN NUMBER,
p_prime OUT NUMBER
) IS
BEGIN
SELECT salary * 0.1 INTO p_prime
FROM employees
WHERE employee_id = p_employee_id;
END;
Cette procédure calcule la prime (10 % du salaire) d'un employé selon son ID.
Caractéristiques principales
Structures conditionnelles et de boucles :
a. Conditionnelle : Permet de prendre des décisions.
b. Boucles : Répètent des instructions.
c. Exemple :
BEGIN
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('Iteration : ' || i);
END LOOP;
END;
Ce code affiche les nombres de 1 à 5.
Gestion d'erreurs robuste :
PL/SQL offre un contrôle précis des exceptions avec des blocs EXCEPTION.
• Exemple d'une exception personnalisée :
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Aucun enregistrement trouvé.');
Cela évite les interruptions brutales des programmes.
• Optimisation des performances :
• PL/SQL réduit les échanges réseau en regroupant plusieurs commandes
SQL dans un seul bloc.
• Sécurité accumulée :
Les procédures et fonctions stockées peuvent limiter l'accès à certaines données,
assurant une meilleure gestion des droits.
Applications pratiques
Automatisation des tâches récurrentes
PL/SQL est idéal pour exécuter des processus récurrents comme des mises à jour,
des envois automatiques d'e-mails, ou des calculs complexes.
Exemple : Mise à jour automatique des stocks
CREATE OR REPLACE PROCEDURE maj_stock ( p_product_id IN
NUMBER, p_quantity IN NUMBER) IS
BEGIN
UPDATE products
SET stock = stock – p_quantity WHERE product_id = p_product_id;
DBMS_OUTPUT.PUT_LINE('Stock mis à jour pour le produit ID ' ||
p_product_id);
END;
Cette procédure déduit une quantité spécifique du stock d'un produit.
Amélioration des performances
PL/SQL permet d'exécuter le traitement côté serveur, éliminant les latences
réseau.
Exemple : Calcul des salaires dans un seul bloc PL/SQL
DECLARE
v_salary NUMBER;
BEGIN
SELECT SUM(salary) INTO v_salary FROM employees;
DBMS_OUTPUT.PUT_LINE('Salaire total : ' || v_salary);
END;
Au lieu d'exécuter plusieurs commandes SQL, un seul bloc exécute tout le calcul
directement dans la base.
Conclusion
PL/SQL est un outil puissant pour la gestion des bases Oracle, offrant des
capacités qui dépassent largement le standard SQL. Grâce à ses fonctionnalités
avancées comme les blocs structurés, les modules réutilisables, et la gestion
d'erreurs, il s'impose comme un choix incontournable pour les développeurs
travaillant avec Oracle.
Pourquoi choisir PL/SQL pour des bases Oracle ?
• Intégration parfaite avec Oracle : PL/SQL exploite pleinement les
fonctionnalités des bases Oracle.
• Performances optimales : Réduction des échanges réseau et exécution
directe côté serveur.
• Automatisation efficace : Simplifie les tâches complexes et répétitives.
PL/SQL est donc essentiel pour toute organisation souhaitant optimiser ses bases
Oracle.