FROM Race
WHERE espece_id = p_espece_id;
END |
DELIMITER ;
Aucun sens n'a été précisé pour p_espece_id , il est donc considéré comme un paramètre entrant.
SELECT COUNT(*) INTO p_nb_races. Voila qui est nouveau ! Comme vous l'avez sans doute deviné, le mot-clé INTO
placé après la clause SELECT permet d'assigner les valeurs sélectionnées par ce SELECT à des variables, au lieu de
simplement afficher les valeurs sélectionnées.
Dans le cas présent, la valeur du COUNT(*) est assignée à p_nb_races.
Pour pouvoir l'utiliser, il est nécessaire que le SELECT ne renvoie qu'une seule ligne, et il faut que le nombre de valeurs
sélectionnées et le nombre de variables à assigner soient égaux :
Exemple 1 : SELECT ... INTO correct avec deux valeurs
Code : SQL
SELECT id, nom INTO @var1, @var2
FROM Animal
WHERE id = 7;
SELECT @var1, @var2;
@var1 @var2
7
Caroline
Le SELECT ... INTO n'a rien affiché, mais a assigné la valeur 7 à @var1, et la valeur 'Caroline' à @var2, que nous
avons ensuite affichées avec un autre SELECT.
Exemple 2 : SELECT ... INTO incorrect, car le nombre de valeurs sélectionnées (deux) n'est pas le même que le nombre de
variables à assigner (une).
Code : SQL
SELECT id, nom INTO @var1
FROM Animal
WHERE id = 7;
Code : Console
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Exemple 3 : SELECT ... INTO incorrect, car il y a plusieurs lignes de résultats.
Code : SQL
SELECT id, nom INTO @var1, @var2
FROM Animal
WHERE espece_id = 5;
Code : Console
Partie 5 : Sécuriser et automatiser ses actions
270/414
www.openclassrooms.com
Précédent

- 270/413

Suivant