Partie II
Programmation procédurale
238
© Éditions Eyrolles
BEGIN
DECLARE p1 SMALLINT;
IF (pcomp IS NULL) THEN
SELECT COUNT(*) INTO p1 FROM Pilote
WHERE nbHVol=(SELECT MAX(nbHVol) FROM Pilote);
ELSE
SELECT COUNT(*) INTO p1 FROM Pilote
WHERE nbHVol=(SELECT MAX(nbHVol) FROM Pilote WHERE comp=pcomp)
AND comp = pcomp;
END IF;
IF (p1 = 0) THEN
SELECT ('Aucun pilote n''est le plus expérimenté') AS resultat;
ELSEIF p1 > 1 THEN
SELECT('Plusieurs pilotes sont les plus expérimentés') AS resultat;
ELSE
IF (pcomp IS NULL) THEN
SELECT nom, nbHVol, comp INTO pnomPil, pheuresVol, pcomp
FROM Pilote WHERE nbHVol=(SELECT MAX(nbHVol) FROM Pilote);
ELSE
SELECT nom, nbHVol INTO pnomPil, pheuresVol FROM Pilote
WHERE nbHVol=(SELECT MAX(nbHVol) FROM Pilote WHERE comp=pcomp)
AND comp = pcomp;
END IF;
END IF;
END;
Fonction n’interagissant pas avec la base
La fonction EcritureComplexe renvoie une chaîne de caractères désignant l’écriture d’un
nombre complexe sous la forme « a + bi » ou « a - bi » (EcritureComplexe.sql), en
fonction du signe des deux paramètres a et b définissant la partie réelle et la partie imaginaire
du complexe.
BEGIN
DECLARE result VARCHAR(80);
IF (imaginaire < 0) THEN
SET result := CONCAT('Complexe : ',reel,'-',-imaginaire,'i');
Web
CREATE PROCEDURE bdsoutou.PlusExperimente
(INOUT pcomp VARCHAR(4), OUT pnomPil VARCHAR(20), OUT pheuresVol DECIMAL(7,2))
Web
CREATE FUNCTION bdsoutou.EcritureComplexe
(reel DECIMAL(7,2), imaginaire DECIMAL(7,2))
RETURNS VARCHAR(80)
Précédent

- 260/418

Suivant