© Éditions Eyrolles
223
chapitre n° 6
Bases du langage de programmation
Extraire des données
La principale instruction capable d’extraire des données contenues dans des tables est
SELECT. Étudiée au chapitre 4 dans un contexte SQL, la particularité de cette instruction au
niveau d’un sous-programme est la directive INTO qui permet de charger des variables à partir
de valeurs de colonnes, comme le montre la syntaxe suivante :
SELECT col1 [,col2 ...]INTO variable1 [,variable2 ...]
FROM nomTable ...;
Cette instruction peut aussi être utilisée à l’extérieur d’un bloc pour charger une variable de
session, par exemple.
Veillez à ne récupérer qu’un seul enregistrement à l’aide du WHERE de la requête. C’est logique, puisque vous désirez ne charger qu’une valeur par variable.
• Si vous en extrayez plusieurs, vous verrez l’erreur : « ERROR 1172 (42000): Result
consisted of more than one row ».
• Si vous n’en extrayez aucun (no data found), aucune erreur n’est soulevée et la variable est
inchangée (elle reste initialisée à la valeur présente avant la requête).
Colonnes simples
Le tableau suivant décrit l’extraction de la colonne compa pour le pilote de code 'PL-2' dans
différents contextes :
Tableau 6-18 Extraction de données
Code MYSQL
Commentaires
BEGIN
DECLARE v_comp VARCHAR(15);
SELECT
FROM Pilote WHERE brevet='PL-2';
...
END;
Chargement d’une variable locale à un bloc.
Nécessité d’appeler par la suite cette procédure (CALL).
SET @vs_compa=''$
SELECT compa
FROM Pilote
WHERE brevet='PL-2'$
...
Chargement d’une variable de session hors
d’un sous-programme.
SET @vs_compa=''$
CREATE PROCEDURE sp1()
BEGIN
SELECT
FROM Pilote WHERE brevet='PL-2';
...
END;
Chargement d’une variable de session dans un
sous-programme.
compa INTO v_comp
INTO @vs_compa
compa INTO @vs_compa
Précédent

- 245/418

Suivant