Partie II
Programmation procédurale
224
© Éditions Eyrolles
Pour traiter des requêtes renvoyant plusieurs enregistrements, il faudra utiliser des curseurs
(étudiés au chapitre suivant).
Fonctions SQL
Il est naturel que les fonctions SQL (mono et multilignes) étudiées au chapitre 4 soient
également disponibles dans un sous-programme, à condition de les utiliser au sein d’une
instruction SELECT. Deux exemples sont décrits dans le tableau suivant : le premier chargera la variable avec le nom du pilote de code 'PL-1' en majuscules (table décrite au début
du chapitre 4) ; le second affectera à la variable le maximum du nombre d’heures de vol,
tous pilotes confondus.
Manipuler des données
Les principales instructions disponibles pour manipuler, par un sous-programme, les
éléments d’une base de données sont les mêmes que celles proposées par SQL, à savoir
INSERT, UPDATE et DELETE. Pour libérer les verrous au niveau d’un enregistrement (et
des tables), il faudra ajouter les instructions COMMIT ou ROLLBACK (aspects étudiés en fin
de chapitre).
Insertions
Le tableau suivant décrit l’insertion de différents enregistrements sous plusieurs écritures (il
est aussi possible d’utiliser des variables de session) :
Comme sous SQL, il faut respecter les noms, types et domaines de valeurs des colonnes. De
même, les contraintes de vérification (CHECK qui n’est pas encore opérationel et NOT NULL)
et d’intégrité (PRIMARY KEY et FOREIGN KEY) doivent être valides.
Dans le cas inverse, une exception qui précise la nature du problème est levée et peut être
interceptée par la directive HANDLER (voir chapitre suivant). Si une telle directive n’existe pas
Tableau 6-19 Utilisation de fonctions
Monoligne
Multiligne
BEGIN
DECLARE v_nomEnMAJUSCULES CHAR(20);
SELECT
FROM Pilote WHERE brevet = 'PL-1';
SELECT v_nomEnMAJUSCULES;
END;
BEGIN
DECLARE v_plusGrandHVol DECIMAL(7,2);
SELECT
FROM Pilote;
SELECT v_plusGrandHVol ;
END;
+-------------------+
| v_nomEnMAJUSCULES |
+-------------------+
| GRATIEN VIEL
|
+-------------------+
+-----------------+
| v_plusGrandHVol |
+-----------------+
|
2450.00 |
+-----------------+
Web
UPPER(nom)
INTO v_nomEnMAJUSCULES
MAX(nbHVol) INTO v_plusGrandHVol
Programmation procédurale
224
© Éditions Eyrolles
Pour traiter des requêtes renvoyant plusieurs enregistrements, il faudra utiliser des curseurs
(étudiés au chapitre suivant).
Fonctions SQL
Il est naturel que les fonctions SQL (mono et multilignes) étudiées au chapitre 4 soient
également disponibles dans un sous-programme, à condition de les utiliser au sein d’une
instruction SELECT. Deux exemples sont décrits dans le tableau suivant : le premier chargera la variable avec le nom du pilote de code 'PL-1' en majuscules (table décrite au début
du chapitre 4) ; le second affectera à la variable le maximum du nombre d’heures de vol,
tous pilotes confondus.
Manipuler des données
Les principales instructions disponibles pour manipuler, par un sous-programme, les
éléments d’une base de données sont les mêmes que celles proposées par SQL, à savoir
INSERT, UPDATE et DELETE. Pour libérer les verrous au niveau d’un enregistrement (et
des tables), il faudra ajouter les instructions COMMIT ou ROLLBACK (aspects étudiés en fin
de chapitre).
Insertions
Le tableau suivant décrit l’insertion de différents enregistrements sous plusieurs écritures (il
est aussi possible d’utiliser des variables de session) :
Comme sous SQL, il faut respecter les noms, types et domaines de valeurs des colonnes. De
même, les contraintes de vérification (CHECK qui n’est pas encore opérationel et NOT NULL)
et d’intégrité (PRIMARY KEY et FOREIGN KEY) doivent être valides.
Dans le cas inverse, une exception qui précise la nature du problème est levée et peut être
interceptée par la directive HANDLER (voir chapitre suivant). Si une telle directive n’existe pas
Tableau 6-19 Utilisation de fonctions
Monoligne
Multiligne
BEGIN
DECLARE v_nomEnMAJUSCULES CHAR(20);
SELECT
FROM Pilote WHERE brevet = 'PL-1';
SELECT v_nomEnMAJUSCULES;
END;
BEGIN
DECLARE v_plusGrandHVol DECIMAL(7,2);
SELECT
FROM Pilote;
SELECT v_plusGrandHVol ;
END;
+-------------------+
| v_nomEnMAJUSCULES |
+-------------------+
| GRATIEN VIEL
|
+-------------------+
+-----------------+
| v_plusGrandHVol |
+-----------------+
|
2450.00 |
+-----------------+
Web
UPPER(nom)
INTO v_nomEnMAJUSCULES
MAX(nbHVol) INTO v_plusGrandHVol
