Maison > base de données > tutoriel mysql > Variables MySQL : quelle est la différence entre « @variables » et les variables de procédure ?

Variables MySQL : quelle est la différence entre « @variables » et les variables de procédure ?

Patricia Arquette
Libérer: 2025-01-21 13:46:09
original
611 Les gens l'ont consulté

MySQL Variables: What's the Difference Between `@variables` and Procedure Variables?

Variables MySQL définies par l'utilisateur : @variables vs variables de procédure

MySQL propose des variables définies par l'utilisateur, désignées par un symbole @ de début (par exemple, @myVar). Ces @variables sont limités à la session ; ils sont initialisés au sein d'une session et persistent jusqu'à la fin de la session. Fondamentalement, elles diffèrent des variables de procédure.

Contrairement à @variables, les variables de procédure sont locales à une procédure stockée. Chaque fois qu'une procédure est appelée, ses variables locales sont réinitialisées à NULL. Cela contraste fortement avec @variables, qui conservent leurs valeurs lors de plusieurs appels de procédure au sein de la même session. La modification d'un @variable à l'intérieur d'une procédure affecte sa valeur pour les appels ultérieurs au sein de cette session.

Il est également important de distinguer les variables @variables et de procédure des variables système de MySQL. Les variables système sont soit globales (par exemple, @@global.port), soit limitées à la session (par exemple, @@session.sql_mode). Les variables système de session, bien que spécifiques à la session, se comportent différemment de @variables.

Illustrons la différence :

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE myProcVar INT DEFAULT 1;
    SET myProcVar = myProcVar + 1;
    SET @myUserVar = @myUserVar + 1;
    SELECT myProcVar, @myUserVar;
END;

SET @myUserVar = 1;

CALL prc_test();
CALL prc_test();
CALL prc_test();</code>
Copier après la connexion

La sortie affichera :

<code>myProcVar  @myUserVar
---------  ----------
2           2
2           3
2           4</code>
Copier après la connexion

Observez que myProcVar (la variable de procédure) se réinitialise à 2 à chaque appel, tandis que @myUserVar (la variable définie par l'utilisateur) s'incrémente de manière cumulative, préservant sa valeur à travers les appels.

Cette compréhension est cruciale pour utiliser efficacement les variables MySQL. @variables gérez les données de session, les variables de procédure gèrent l'état de la procédure locale et les variables système contrôlent l'environnement de la base de données.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal