Demain
mercredi 2 mai 2012
Tout comme pour les paramètres, les variables locales peuvent poser problème si l'on ne fait pas attention au nom qu'on
leur donne. En cas de conflit (avec un nom de colonne par exemple), comme pour les paramètres, le nom sera interprété
comme désignant la variable locale en priorité. Par conséquent, toutes mes variables locales seront préfixées par "v_".
Portée des variables locales dans un bloc d'instruction
Les variables locales n'existent que dans le bloc d'instructions dans lequel elles ont été déclarées. Dès que le mot-clé END est
atteint, toutes les variables locales du bloc sont détruites.
Exemple 1 :
Code : SQL
DELIMITER |
CREATE PROCEDURE test_portee1()
BEGIN
DECLARE v_test1 INT DEFAULT 1;
BEGIN
DECLARE v_test2 INT DEFAULT 2;
SELECT 'Imbriqué' AS Bloc;
SELECT v_test1, v_test2;
END;
SELECT 'Principal' AS Bloc;
SELECT v_test1, v_test2;
END|
DELIMITER ;
CALL test_portee1();
Bloc
Imbriqué
v_test1 v_test2
1
2
Bloc
Principal
Code : Console
ERROR 1054 (42S22): Unknown column 'v_test2' in 'field list'
La variable locale v_test2 existe bien dans le bloc imbriqué, puisque c'est là qu'elle est définie, mais pas dans le bloc principal.
v_test1 par contre existe dans le bloc principal (où elle est définie), mais aussi dans le bloc imbriqué.
Exemple 2 :
Code : SQL
Partie 5 : Sécuriser et automatiser ses actions
277/414
www.openclassrooms.com
Précédent

- 277/413

Suivant