SELECT 'Coucou !' AS Salutations;
END CASE;
END|
DELIMITER ;
CALL salut_nom(69); -- Baba
CALL salut_nom(5);
-- Choupi
CALL salut_nom(29); -- Fiero
CALL salut_nom(54); -- Bubulle
Salutations
Bonjour !
Salutations
Coucou !
Salutations
Salut !
Code : Console
ERROR 1339 (20000): Case not found for CASE statement
L'appel de la procédure avec Bubulle présente un cas qui n'est pas couvert par les trois WHEN. Une erreur est donc déclenchée
Donc, si l'on n'est pas sûr d'avoir couvert tous les cas possibles, il faut toujours ajouter une clause ELSE pour éviter les erreurs.
Si l'on veut qu'aucune instruction ne soit exécutée par le ELSE, il suffit simplement de mettre un bloc d'instructions vide (BEGIN
END;).
Exemple : reprenons la procédure salut_nom(), et ajoutons-lui une clause ELSE vide :
Code : SQL
DROP PROCEDURE salut_nom;
DELIMITER |
CREATE PROCEDURE salut_nom(IN p_animal_id INT)
BEGIN
DECLARE v_terminaison CHAR(1);
SELECT SUBSTRING(nom, -1, 1) INTO v_terminaison
FROM Animal
WHERE id = p_animal_id;
CASE v_terminaison
WHEN 'a' THEN
SELECT 'Bonjour !' AS Salutations;
WHEN 'o' THEN
SELECT 'Salut !' AS Salutations;
WHEN 'i' THEN
SELECT 'Coucou !' AS Salutations;
ELSE
BEGIN
-- Bloc
d'instructions vide
END;
END CASE;
END|
Partie 5 : Sécuriser et automatiser ses actions
284/414
www.openclassrooms.com
END CASE;
END|
DELIMITER ;
CALL salut_nom(69); -- Baba
CALL salut_nom(5);
-- Choupi
CALL salut_nom(29); -- Fiero
CALL salut_nom(54); -- Bubulle
Salutations
Bonjour !
Salutations
Coucou !
Salutations
Salut !
Code : Console
ERROR 1339 (20000): Case not found for CASE statement
L'appel de la procédure avec Bubulle présente un cas qui n'est pas couvert par les trois WHEN. Une erreur est donc déclenchée
Donc, si l'on n'est pas sûr d'avoir couvert tous les cas possibles, il faut toujours ajouter une clause ELSE pour éviter les erreurs.
Si l'on veut qu'aucune instruction ne soit exécutée par le ELSE, il suffit simplement de mettre un bloc d'instructions vide (BEGIN
END;).
Exemple : reprenons la procédure salut_nom(), et ajoutons-lui une clause ELSE vide :
Code : SQL
DROP PROCEDURE salut_nom;
DELIMITER |
CREATE PROCEDURE salut_nom(IN p_animal_id INT)
BEGIN
DECLARE v_terminaison CHAR(1);
SELECT SUBSTRING(nom, -1, 1) INTO v_terminaison
FROM Animal
WHERE id = p_animal_id;
CASE v_terminaison
WHEN 'a' THEN
SELECT 'Bonjour !' AS Salutations;
WHEN 'o' THEN
SELECT 'Salut !' AS Salutations;
WHEN 'i' THEN
SELECT 'Coucou !' AS Salutations;
ELSE
BEGIN
-- Bloc
d'instructions vide
END;
END CASE;
END|
Partie 5 : Sécuriser et automatiser ses actions
284/414
www.openclassrooms.com
