Maison > base de données > tutoriel mysql > Variables définies par l'utilisateur et variables de procédure dans MySQL : quelle est la différence ?

Variables définies par l'utilisateur et variables de procédure dans MySQL : quelle est la différence ?

Mary-Kate Olsen
Libérer: 2025-01-21 14:01:10
original
499 Les gens l'ont consulté

User-Defined Variables vs. Procedure Variables in MySQL: What's the Difference?

Comparaison des variables définies par l'utilisateur et des variables de processus dans MySQL

Dans MySQL, les variables définies par l'utilisateur sont déclarées avec un préfixe @, tandis que les variables de procédure n'ont pas de préfixe. Cette distinction vient du fait que les variables définies par l'utilisateur spécifiques à la session conservent leur valeur tout au long d'une session, tandis que les variables de procédure sont réinitialisées à NULL à chaque appel de procédure.

Variables spécifiques à la session (@variable)

Les variables définies par l'utilisateur préfixées par @ agissent comme des variables spécifiques à la session. Ils peuvent être initialisés à l'aide d'une instruction SET ou dans une requête et persister jusqu'à la fin de la session. Par exemple :

<code class="language-sql">SET @var = 1;</code>
Copier après la connexion

Variable de processus (variable)

Les variables déclarées dans une procédure stockée ou une fonction sans préfixe sont des variables locales. Ces variables ne sont disponibles que dans le cadre de la procédure et sont réinitialisées à NULL à chaque appel de procédure.

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    ...
END;</code>
Copier après la connexion

Principales différences

Le tableau suivant résume les principales différences entre les @ variables et les variables de processus :

Fonctionnalités @variable (spécifique à la session) variable (variable de processus) ête> Portée Dernier pour toute la session Réinitialisé à chaque appel de procédure Syntaxe Préfixé par
特性 @variable (会话特定) variable (过程变量)
作用域 持续整个会话 每次过程调用时重新初始化
语法 @ 为前缀 没有前缀
Aucun préfixe

Exemple

Considérez la procédure stockée suivante :

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    SET var2 = var2 + 1;
    SET @var2 = @var2 + 1;
    ...
END;</code>
Copier après la connexion

A chaque appel de cette procédure, var2 est remis à 1 et @var2 continue d'être incrémenté. Cela démontre le comportement de réinitialisation des variables de processus et la nature spécifique à la session des 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!

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