IF condition THEN
instructions
END IF;
Soit on exécute les instructions (si la condition est vraie), soit on ne les exécute pas.
Exemple : la procédure suivante affiche 'J''ai déjà été adopté !', si c'est le cas, à partir de l'id d'un animal :
Code : SQL
DELIMITER |
CREATE PROCEDURE est_adopte(IN p_animal_id INT)
BEGIN
DECLARE v_nb INT DEFAULT 0;
-- On crée une variable
locale
SELECT COUNT(*) INTO v_nb
-- On met le nombre de
lignes correspondant à l'animal
FROM Adoption
-- dans Adoption dans
notre variable locale
WHERE animal_id = p_animal_id;
IF v_nb > 0 THEN
-- On teste si v_nb est
supérieur à 0 (donc si l'animal a été adopté)
SELECT 'J''ai déjà été adopté !';
END IF;
-- Et on n'oublie surtout
pas le END IF et le ; final
END |
DELIMITER ;
CALL est_adopte(3);
CALL est_adopte(28);
Seul le premier appel à la procédure va afficher 'J''ai déjà été adopté !', puisque l'animal 3 est présent dans la table
Adoption, contrairement à l'animal 28.
Deuxième cas : si ... alors, sinon ...
Grâce au mot-clé ELSE, on peut définir une série d'instructions à exécuter si la condition est fausse.
ELSE ne doit pas être suivi de THEN.
Exemple : la procédure suivante affiche 'Je suis né avant 2010' ou 'Je suis né après 2010', selon la date
de naissance de l'animal transmis en paramètre.
Code : SQL
DELIMITER |
CREATE PROCEDURE avant_apres_2010(IN p_animal_id INT)
BEGIN
DECLARE v_annee INT;
SELECT YEAR(date_naissance) INTO v_annee
FROM Animal
WHERE id = p_animal_id;
IF v_annee < 2010 THEN
SELECT 'Je suis né avant 2010' AS naissance;
ELSE
-- Pas de
THEN
Partie 5 : Sécuriser et automatiser ses actions
280/414
www.openclassrooms.com
Précédent

- 280/413

Suivant