Maison > Article > base de données > Variables définies par l'utilisateur ou variables locales dans MySQL ?
Les variables définies par l'utilisateur sont également appelées variables spécifiques à la session. Il s'agit d'une variable vaguement typée qui peut être initialisée quelque part dans la session et contient la valeur de la variable définie par l'utilisateur jusqu'à la fin de la session.
Les variables définies par l'utilisateur sont préfixées par le symbole @. Par exemple :
@anyVariableName;
Il existe deux manières d'initialiser les variables définies par l'utilisateur. Vous pouvez utiliser la commande SET ou utiliser une requête SELECT. La première méthode est la suivante :
SET @anyVariableName=anyValue;
La deuxième méthode est la suivante :
SELECT @anyVariableName :=anyValue;
Si vous n'utilisez pas de deux-points (:) dans la requête SELECT, elle sera évaluée comme une expression. Le résultat est vrai ou faux :
mysql> select @m=10;
Voici le résultat :
+-------+ | @m=10 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)
Les variables locales peuvent être utilisées dans des procédures stockées, des fonctions, etc., avec le mot-clé DECLARE. Aucun préfixe @ n'est requis comme les variables définies par l'utilisateur.
La syntaxe des variables locales est la suivante.
DECLARE yourVariableName dataType;
REMARQUE : La principale différence entre les variables locales et les variables définies par l'utilisateur est que les variables locales sont réinitialisées avec une valeur NULL à chaque fois qu'une procédure stockée est appelée, alors que les variables spécifiques à la session ou définies par l'utilisateur ne le sont pas. . Non réinitialisé avec NULL. Les variables définies par l'utilisateur et définies par un utilisateur ne peuvent pas être vues par les autres utilisateurs. Toutes les variables de session pour un utilisateur donné sont automatiquement détruites lorsque l'utilisateur quitte.
Voici une démonstration de variables spécifiques à la session et de variables locales avec des procédures stockées. La requête pour créer une procédure stockée avec des variables locales et des variables définies par l'utilisateur est la suivante :
mysql> DELIMITER // mysql> CREATE PROCEDURE sp_LocalAndUserDefinedVariableDemo() -> BEGIN -> DECLARE localVariable int default 10; -> SET localVariable=localVariable+10; -> SET @userVariable=@userVariable+10; -> SELECT localVariable; -> SELECT @userVariable; -> END; -> // Query OK, 0 rows affected (0.39 sec) mysql> DELIMITER ;
Définissez maintenant la valeur de la variable définie par l'utilisateur. La requête est la suivante :
mysql> SET @userVariable=10; Query OK, 0 rows affected (0.00 sec)
Appelez maintenant la procédure stockée. Lorsqu'elle est appelée pour la première fois, la variable définie par l'utilisateur est 10+10=20 et la variable locale est 10+10=20.
Appelez la procédure stockée à l'aide de la commande call :
mysql> CALL sp_LocalAndUserDefinedVariableDemo();
Voici le résultat :
+---------------+ | localVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.32 sec) +---------------+ | @userVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.34 sec) Query OK, 0 rows affected (0.36 sec)
Dans le deuxième appel, la variable définie par l'utilisateur contiendra la valeur 20 et ajoutera 10 comme 20+10=30, tandis que la variable locale la variable est à nouveau utilisée 10 Réinitialisez et ajoutez 10, par exemple 10+10=20.
Appelez la procédure stockée et vérifiez l'exemple de sortie :
mysql> CALL sp_LocalAndUserDefinedVariableDemo();
Voici le résultat :
+---------------+ | localVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.00 sec) +---------------+ | @userVariable | +---------------+ | 30 | +---------------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.02 sec)
Dans le troisième appel, la variable définie par l'utilisateur contiendra la valeur 30 et ajoutera 10 comme 30+10=40 et à nouveau la variable locale Réinitialisez avec 10 et ajoutez 10, comme 10+10=20.
Maintenant, vous pouvez dire que dans chaque appel de procédure, la variable locale est réinitialisée avec une valeur qui peut être NULL ou autre chose comme dans mon cas, j'ai fourni la valeur par défaut 10. Cela signifie qu'il définit les variables locales à la valeur 10 à chaque appel de procédure, contrairement aux variables définies par l'utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!