© Éditions Eyrolles
281
chapitre n° 7
Programmation avancée
Instruction UPDATE
Le tableau suivant décrit la construction dynamique de l’instruction de modification (augmentation du nombre d’heures de vol d’un pourcentage passé en premier paramètre) d’un avion
dont l’immatriculation passe en deuxième paramètre. Notez qu’il n’est pas besoin de doubler
le guillemet dans la spécification du deuxième placeholder : paramètre immat (bien qu’il
s’agisse d’une chaîne de caractères).
L’appel de cette procédure aura pour conséquence d’aumenter de 10 % le nombre d’heures de
vol de l’avion immatriculé 'F-GLFS'.
Si l’immatriculation avait été une constante, il aurait fallu doubler le guillemet dans l’affectation
de la variable de session :
SET @vs_chaine ='UPDATE Avion SET nbHVol=nbHVol*? WHERE immat=''F-GLFS'''$
Restrictions
Les placeholders (points d’interrogation) des états préparés ne peuvent pas remplacer des
noms de tables, de vues, d’index, de colonnes, etc., dans une instruction, de sorte à construire
un ordre dynamiquement. Ils ne peuvent que remplacer des donnés :
• dans la clause WHERE pour des SELECT, UPDATE (dans la clause SET aussi) ou DELETE.
• dans la clause VALUES pour un INSERT.
Utilisations
Le tableau suivant résume quelques cas permis et les cas non valides associés. N’oubliez pas de
doubler chaque guillemet pour affecter une telle chaîne de caractères dans une variable de session.
Tableau 7-33 Utilisation de UPDATE
Code MySQL
Commentaires
SET @vs_chaine =
SET @vs_immat
= 'F-GLFS'$
SET @vs_pourcent = 1.1$
Déclaration des variables de session.
CREATE PROCEDURE bdsoutou.sousProg()
BEGIN
END;
Préparation de l’ordre.
Exécution.
Web
'UPDATE Avion SET nbHVol=nbHVol*?
WHERE immat=?'$
PREPARE etat FROM @vs_chaine;
EXECUTE etat USING @vs_pourcent,@vs_immat;
DROP PREPARE etat;
281
chapitre n° 7
Programmation avancée
Instruction UPDATE
Le tableau suivant décrit la construction dynamique de l’instruction de modification (augmentation du nombre d’heures de vol d’un pourcentage passé en premier paramètre) d’un avion
dont l’immatriculation passe en deuxième paramètre. Notez qu’il n’est pas besoin de doubler
le guillemet dans la spécification du deuxième placeholder : paramètre immat (bien qu’il
s’agisse d’une chaîne de caractères).
L’appel de cette procédure aura pour conséquence d’aumenter de 10 % le nombre d’heures de
vol de l’avion immatriculé 'F-GLFS'.
Si l’immatriculation avait été une constante, il aurait fallu doubler le guillemet dans l’affectation
de la variable de session :
SET @vs_chaine ='UPDATE Avion SET nbHVol=nbHVol*? WHERE immat=''F-GLFS'''$
Restrictions
Les placeholders (points d’interrogation) des états préparés ne peuvent pas remplacer des
noms de tables, de vues, d’index, de colonnes, etc., dans une instruction, de sorte à construire
un ordre dynamiquement. Ils ne peuvent que remplacer des donnés :
• dans la clause WHERE pour des SELECT, UPDATE (dans la clause SET aussi) ou DELETE.
• dans la clause VALUES pour un INSERT.
Utilisations
Le tableau suivant résume quelques cas permis et les cas non valides associés. N’oubliez pas de
doubler chaque guillemet pour affecter une telle chaîne de caractères dans une variable de session.
Tableau 7-33 Utilisation de UPDATE
Code MySQL
Commentaires
SET @vs_chaine =
SET @vs_immat
= 'F-GLFS'$
SET @vs_pourcent = 1.1$
Déclaration des variables de session.
CREATE PROCEDURE bdsoutou.sousProg()
BEGIN
END;
Préparation de l’ordre.
Exécution.
Web
'UPDATE Avion SET nbHVol=nbHVol*?
WHERE immat=?'$
PREPARE etat FROM @vs_chaine;
EXECUTE etat USING @vs_pourcent,@vs_immat;
DROP PREPARE etat;
