Académique Documents
Professionnel Documents
Culture Documents
16 janvier 2022
1 Introduction au PL/SQL
2 Syntaxe de PL/SQL
3 Structure de contrôle
4 Gestion d’exceptions
5 Les curseurs
6 Les Triggers
A. MED LAGHDAF (ESP) PL/SQL 16 janvier 2022 2 / 33
Introduction au PL/SQL Introdcution
Description
Le langage PL/SQL est un langage de quatrième génération qui fournit une
interface de programmation au SGBD Oracle. Il intègre parfaitement le
langage SQL en lui apportant une dimension procédurale.
Description
Le langage PL/SQL est un langage de quatrième génération qui fournit une
interface de programmation au SGBD Oracle. Il intègre parfaitement le
langage SQL en lui apportant une dimension procédurale.
Description
Le langage PL/SQL est un langage de quatrième génération qui fournit une
interface de programmation au SGBD Oracle. Il intègre parfaitement le
langage SQL en lui apportant une dimension procédurale.
Description
Le langage PL/SQL est un langage de quatrième génération qui fournit une
interface de programmation au SGBD Oracle. Il intègre parfaitement le
langage SQL en lui apportant une dimension procédurale.
Description
Le langage PL/SQL est un langage de quatrième génération qui fournit une
interface de programmation au SGBD Oracle. Il intègre parfaitement le
langage SQL en lui apportant une dimension procédurale.
Instruction
PL/SQL offre la plupart des constructions des langages de programmation :
affectation de variables, structures de contrôle de boucle (LOOP) et de teste
(if-then-ELSE), appels de procédure et de fonction, etc.
Définition
PL/SQL reconnait tous les types standard de SQL, plus quelques autres dont
le type Boolean qui peut prendre les valeurs TRUE ou FALSE. Il propose
également deux constructeurs permettant de créer des types composés :
Définition
PL/SQL reconnait tous les types standard de SQL, plus quelques autres dont
le type Boolean qui peut prendre les valeurs TRUE ou FALSE. Il propose
également deux constructeurs permettant de créer des types composés :
Suite
Le constructeur RECORD est particulièrement intéressant pour représenter un
n-uplet d’une table, et donc pour définir des variables servant à stocker le
résultat d’une requête SQL. On peut définir soit-même un type avec RECORD,
avec une syntaxe très similaire à celle d’une CREATE TABLE
Suite
PL/SQL offre également un mécanisme extrêmement utile consistant à dériver
automatiquement un type RECORD en fonction d’une table ou d’un attribut
d’une table. On utilise alors le nom de la table ou de l’attribut, associées
respectivement au qualificateur %ROWTYPE ou %TYPE pour signaler le type
dérivé. voici quelques exemples :
Suite
PL/SQL offre également un mécanisme extrêmement utile consistant à dériver
automatiquement un type RECORD en fonction d’une table ou d’un attribut
d’une table. On utilise alors le nom de la table ou de l’attribut, associées
respectivement au qualificateur %ROWTYPE ou %TYPE pour signaler le type
dérivé. voici quelques exemples :
Définition
La variable doit être du même type que l’attribut correspondant de la clause
SELECT, ce qui incite fortement à utiliser le type dérivé avec %TYPE. Dés
que l’on veut transférer plusieurs valeurs d’attributs dans des variables, on a
sans doute intérêt à utiliser un type dérivé %ROWTYPE qui limité le nombre de
déclarations à effectuer.
L’affectation d’une variable est effectuée par l’opérateur := avec la syntaxe
suivante :
Définition
Rappelons que tous les opérateurs SQL (arthimétiques, concaténation de
chaı̂nes, manipulation de dates) et toutes les fonctions du SGBD sont
utilisables en PL/SQL. Une autre manière d’affecter une variables est d’y
transférer tout ou partie d’un n-uplet provenant d’une requête SQL avec la
syntaxe :
Structure conditionnelle
L’association dans la requête SQL de noms d’attributs et de noms de variables
peut parfois s’avérer ambiguë d’où l’utilité d’une convention permettant de
distinguer clairement ces derniers. LEs structure de test et de boucles sont tout
à fait standard. La structure conditionnelle est le IF dont la syntaxe est la
suivante :
Structure conditionnelle
Les conditions sont exprimées comme dans une clause WHERE de SQL, avec
notamment la possibilité de tester si une valeur est à NULL, des opérateurs
comme LIKE et les connecteurs usuels. Le ELSE est optionnel, et peut
éventuellement être associé à un autre . . . IF, selon la syntaxe génralisée
suivante :
Structure itérative
Il existe trois formes de boucles : LOOP, FOR et WHILE. Seules les deux
dernières sont présentées ici car elles suffisent à tous les besoins et sont
semblables aux structure habituelles.
Structure itérative
Il existe trois formes de boucles : LOOP, FOR et WHILE. Seules les deux
dernières sont présentées ici car elles suffisent à tous les besoins et sont
semblables aux structure habituelles.
Structure itérative
La boucle FOR permet de répéter un ensemble d’instructions pour chaque
valeur d’un intervalle de nombres entiers La Syntaxe est donnée ci-dessous.
Notez les deux points entre les deux bornes de l’intervalle, et la possibilité de
parcourir cet intervalle de haut en bas avec l’option REVERSE
Structure du langage
Le code PL/SQL est structuré en blocs. Un bloc comprend trois sections
explicitement délimitées :
Les déclarations ;
Les instructions (encadrée par begin et end
Les exceptions placées en général à la fin de la section d’instruction.
Les exceptions
Les exceptions en PL/SQL peuvent être soit des erreurs renvoyées par le
SGBD lui-meême en cas de manipulation incorrecte des données, soit des
erreurs définis par le programmeur lui-même. Le principe est que toute erreur
rencontrée à l’exécution entraı̂ne la levée d’une exception.
Description
Les curseurs constituent un mécanisme de base dans les programmes accédant
aux bases de données. Ce mécanisme repose sur l’idée de traiter un n-uplet à
la fois dans le résultat d’une requête, ce qui permet d’éviter le chargement,
dans l’espace mémoire du client, d’un ensemble qui peut être très volumineux.
Description
En général on utilise des curseurs paramètres qui, comme leur nom l’indique,
intègrent dans la requête SQL une ou plusieurs variables dont les valeurs, au
moment de l’exécution, déterminent le résultat et donc l’ensemble de n-uplets
à parcourir. Enfin on peut, optionnellement, déclarer l’intention de modifier
les n-uplet traités par le curseur avec un UPDATE, ce qui entraı̂ne au moment
de l’exécution quelques conséquences importantes. Le syntaxe général d’un
curseur est donc la suivante :
Description
Les paramètres sont indiqués comme pour une procédure, mais le mode doit
toujours être IN. Le curseur suivant effectue la même jointure que
précédemment, mais les films sont sélectionnés sur l’année de parution grace
à un paramètre.
Description
Une déclaration complémentaire est celle des variables qui vont permettre de
recevoir les n-uplet au fur et à mesure de leur parcours. Le type dérivé d’un
curseur est obtenu avec la syntaxe < nomCurseur > %ROWTYPE. Il s’agit
d’un type RECORD avec un champ par correspondant à expression de la
clause SELECT.
Descirption
Le mécanisme de triggers est implanté dans les SGBD depuis des nombreuses
années. Un trigger est simplement une procédure stockée dont la particularité
principale est de se déclencher automatiquement sur certains événements
mise à jour spécifiés par le créateur du triggers. Les possibilités offertes par
les triggers sont très intéressantes. Citons :
Un trigger peut être exécuté au choix une fois pour un seul ordre SQL,
ou à chaque n-uplet concerné par cet ordre ;
L’action déclenchée peut intervenir avant l’événement, ou après ;
L’utilisateur des triggers permet de rendre une base de données
dynamique :
Une opération sur la base peut en déclencher d’autres, qui elles-mêmes
peuvent entraı̂ner en cascade d’autres réflexes :
Ce mécanimse n’est pas sans danger à cause des risques de boucle infinie.