Ce cours s’adresse aux développeurs ayant besoin d’avoir une très bonne connaissance de PL/pgSQL. Il nécessite une bonne connaissance de PostgreSQL et de SQL. La connaissance d’un langage quelconque de programmation de haut niveau (C, Fortran, Pascal, …) est indispensable.
Plan détaillé
Introduction et rappels
- Introduction au langage SQL.
- Outils utilisés : psql et pgAdminIII/pgAdmin4.
- Introduction aux transactions.
- Rappels sur les types de PostgreSQL.
- Fonctions prédéfinies.
- Fonctions de conversion.
- Survol du langage PL/pgSQL.
- Objets et schémas dans PostgreSQL.
Éléments du langage PL/pgSQL
- Première approche pratique au langage.
- Introduction syntaxique à PL/pgSQL.
- Types et conversion des types.
- Instructions composées.
- Types composites, instruction CREATE TYPE.
- Utilisation des tableaux.
Travaux pratiques : exécution des blocs PL/pgSQL, la conversion des types, utilisation des boucles, utilisation des tableaux.
Accès à la base
- Exécution directe des instructions SQL, récupération de l’information sur l’exécution.
- Utilisation des curseurs.
- Le déplacement dans un curseur et l’instruction MOVE.
- Boucles FOR à curseur.
- Mise à jour de la ligne pointée par le curseur.
- Utilisation de SQL dynamique, variables de lien.
Travaux pratiques : Utilisation des curseurs, curseurs et mise à jour (WHERE CURRENT OF), utilisation de SQL dynamique, SQL dynamique et variables de lien.
Fonctions stockées
- Fonctions SQL stockées.
- Fonctions PL/pgSQL stockées.
- Paramètres des fonctions.
- Volatilité des fonctions stockées.
- Fonctions retournant le résultat d’une requête.
- Sécurité et droits des fonctions stockées.
Travaux pratiques : les travaux pratiques concernent l’ensemble des points énumérés.
Gestion des erreurs
- Structure du gestionnaire des erreurs.
- Variables sqlstate et sqlerrm, diagnostic des erreurs.
- Provocation intentionnelle d’erreur : instruction RAISE.
- Atomicité des opérations et propagation des erreurs.
Travaux pratiques: usage des variables sqlstate et sqlerrm, usage de l’instruction RAISE.
Triggers
- Triggers sur événements LMD.
- Triggers de niveau instruction.
- Triggers de niveau ligne.
- Atomicité des opérations et modèle d’exécution des triggers LMD.
- Compléments
- Triggers E/C/A et utilisation de la clause WHEN.
- Traitements différenciés.
Travaux pratiques : les travaux pratiques concernent l’ensemble des rubriques énumérées.