© Éditions Eyrolles
283
chapitre n° 7
Programmation avancée
+---------+---------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| immat
| char(4) | YES |
| NULL
|
|
| turbine | int(11) | YES |
| NULL
|
|
+---------+---------+------+-----+---------+-------+
2 rows in set (0.39 sec)
Exemple avec placeholder
La procédure cataloguée suivante crée dynamiquement la requête d’extraction du type et du
nombre d’heures de vol (colonnes de noms passés en premier et en deuxième paramètres) de
la table de nom passé en troisième paramètre, en fonction d’une condition sur une colonne (de
nom passé en quatrième paramètre). Cette condition fait intervenir un paramètre (placeholder)
valant ici 'F-GLFS'.
L’appel de cette procédure avec les paramètres suivants aura pour effet d’extraire les valeurs
des deux colonnes du premier enregistrement de la table Avion présentée au début de cette
section.
CALL bdsoutou.sousProg('typeAv','nbHVol','Avion','immat')$
+--------+---------+
| typeAv | nbHVol |
+--------+---------+
| A320
| 1000.00 |
+--------+---------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Tableau 7-36 Création dynamique d’une requête avec placeholder
Code MySQL
Commentaires
CREATE PROCEDURE bdsoutou.sousProg
(IN v_param1 CHAR(6), IN v_param2 CHAR(6),
IN v_param3 CHAR(5), IN v_param4 CHAR(5))
BEGIN
SET @vs_immat := 'F-GLFS';
SET @vs_chaine :=
CONCAT(
;
PREPARE etat FROM @vs_chaine;
EXECUTE etat USING @vs_immat;
DEALLOCATE PREPARE etat;
END;
Avec l’appel suivant, construction de la chaîne :
‘SELECT typeAv,nbHVol
FROM bdsoutou.Avion
WHERE immat=?’
Exécution de la requête paramétrée.
Web
'SELECT ',v_param1,',',v_param2,
' FROM bdsoutou.',v_param3,
' WHERE ',v_param4,' = ?')
Précédent

- 305/418

Suivant