
SQL est le langage qui interroge et manipule les données ; PL/SQL est le langage de programmation procédural d’Oracle qui ajoute au SQL des variables, des conditions, des boucles et la gestion d’erreurs. En clair : SQL dit quoi faire sur les données, PL/SQL permet d’orchestrer une logique autour. Voici la différence en détail, avec exemples.
Tableau comparatif
| SQL | PL/SQL | |
|---|---|---|
| Nature | Langage de requête (déclaratif) | Langage procédural |
| Exécution | Un ordre à la fois | Des blocs entiers (logique) |
| Variables, IF, boucles | ❌ non | ✅ oui |
| Gestion d’erreurs | ❌ non | ✅ (EXCEPTION) |
| Objets stockés | — | Procédures, fonctions, packages, triggers |
| Rôle | Manipuler les données | Automatiser une logique métier |
SQL : interroger et manipuler les données
SQL (Structured Query Language) est déclaratif : vous décrivez le résultat voulu, le moteur décide comment l’obtenir.
SELECT nom, solde FROM comptes WHERE solde > 1000;
UPDATE comptes SET solde = solde * 1.01 WHERE actif = 'O';Chaque instruction est autonome. SQL ne sait pas, à lui seul, « faire une boucle » ou « réagir à une erreur ». Pour les bases : notre tutoriel SELECT en SQL Oracle.
PL/SQL : ajouter de la logique procédurale
PL/SQL (Procedural Language/SQL) enveloppe le SQL dans une vraie structure de programmation : blocs, variables, conditions, boucles, exceptions.
DECLARE
v_solde comptes.solde%TYPE;
BEGIN
SELECT solde INTO v_solde FROM comptes WHERE id = 42;
IF v_solde < 0 THEN
DBMS_OUTPUT.put_line('Compte à découvert !');
ELSE
UPDATE comptes SET solde = v_solde * 1.01 WHERE id = 42;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('Compte introuvable');
END;Ici, le SQL (SELECT, UPDATE) est intégré dans une logique. PL/SQL sert à créer des procédures, triggers, packages, etc.
Comment ils travaillent ensemble
On ne choisit pas « SQL ou PL/SQL » : on les combine. Le SQL fait le travail sur les données ; PL/SQL orchestre quand et comment. Un trigger (PL/SQL) qui se déclenche après un INSERT (SQL) en est l’exemple parfait.
Quand utiliser quoi ?
- Une requête, un calcul, un export → SQL seul.
- Une règle métier, un traitement conditionnel, une automatisation → PL/SQL.
- Règle d’or : si un seul ordre SQL ensembliste suffit, n’enroulez pas inutilement du PL/SQL autour (c’est plus lent).
FAQ
Faut-il apprendre SQL avant PL/SQL ?
Oui, absolument : PL/SQL repose sur SQL. Maîtrisez d’abord SELECT, les jointures et les fonctions, puis ajoutez la logique procédurale.
PL/SQL existe-t-il ailleurs que sur Oracle ?
PL/SQL est propre à Oracle. Les équivalents sont PL/pgSQL (PostgreSQL) et T-SQL (SQL Server) — même idée, syntaxe différente.
PL/SQL est-il plus rapide que SQL ?
Non : pour manipuler des ensembles de données, le SQL pur est généralement plus rapide. PL/SQL brille quand il faut de la logique, pas pour remplacer un bon ordre ensembliste.
