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>
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>
Principales différences
Le tableau suivant résume les principales différences entre les @
variables et les variables de processus :
@variable
(spécifique à la session)variable
(variable de processus)特性 |
@variable (会话特定) |
variable (过程变量) |
---|---|---|
作用域 | 持续整个会话 | 每次过程调用时重新初始化 |
语法 | 以 @ 为前缀 |
没有前缀 |
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>
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!