Comparaison des types de variables MySQL : @variable
et variable
MySQL fournit deux types de variables : les variables définies par l'utilisateur et les variables définies par l'utilisateur au niveau de la session. Ce dernier commence par le symbole @
(@variable
), alors que le premier ne le fait pas (variable
).
Variables définies par l'utilisateur
Ces variables sont mal typées et conservent leur valeur tout au long de la session. Ils sont créés en dehors de toute procédure stockée à l'aide de l'instruction SET
. Par exemple :
<code class="language-sql">SET @var = 1;</code>
Variables définies par l'utilisateur au niveau de la session
Contrairement aux variables définies par l'utilisateur, ces variables ne sont visibles que dans la session en cours. Ils sont déclarés dans des procédures stockées et passés en paramètres. Par exemple :
<code class="language-sql">CREATE PROCEDURE prc_test(var INT) BEGIN DECLARE var2 INT; SET var2 = 1; END;</code>
Principales différences
La principale différence entre ces deux types de variables est leur portée et la manière dont elles sont initialisées. Les variables de procédure sont réinitialisées à NULL
à chaque fois que la procédure est appelée, tandis que les variables au niveau de la session conservent leurs valeurs lors des appels de procédure. L'extrait de code suivant le démontre :
<code class="language-sql">CREATE PROCEDURE prc_test() BEGIN DECLARE var2 INT DEFAULT 1; SET var2 = var2 + 1; SET @var2 = @var2 + 1; END; SET @var2 = 1;</code>
Exemple de sortie :
var2 | @var2 |
---|---|
2 | 2 |
2 | 3 |
2 | 4 |
Comme vous pouvez le voir, var2
est réinitialisé à chaque fois, tandis que @var2
accumule les changements de valeur au fil des appels.
Conclusion
Comprendre la différence entre @variable
et variable
est essentiel pour un développement MySQL efficace. Il vous permet de gérer les variables de manière appropriée en fonction de leur portée et de leur comportement d'initialisation, garantissant ainsi l'efficacité et la précision du code.
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!