Vergleich der MySQL-Variablentypen: @variable
und variable
MySQL bietet zwei Arten von Variablen: benutzerdefinierte Variablen und benutzerdefinierte Variablen auf Sitzungsebene. Letzteres beginnt mit dem @
-Symbol (@variable
), ersteres jedoch nicht (variable
).
Benutzerdefinierte Variablen
Solche Variablen sind lose typisiert und behalten ihren Wert während der gesamten Sitzung. Sie werden außerhalb einer gespeicherten Prozedur mithilfe der SET
-Anweisung erstellt. Zum Beispiel:
<code class="language-sql">SET @var = 1;</code>
Benutzerdefinierte Variablen auf Sitzungsebene
Im Gegensatz zu benutzerdefinierten Variablen sind diese Variablen nur in der aktuellen Sitzung sichtbar. Sie werden in gespeicherten Prozeduren deklariert und als Parameter übergeben. Zum Beispiel:
<code class="language-sql">CREATE PROCEDURE prc_test(var INT) BEGIN DECLARE var2 INT; SET var2 = 1; END;</code>
Hauptunterschiede
Der Hauptunterschied zwischen diesen beiden Variablentypen ist ihr Gültigkeitsbereich und die Art und Weise, wie sie initialisiert werden. Prozedurvariablen werden bei jedem Aufruf der Prozedur auf NULL
neu initialisiert, während Variablen auf Sitzungsebene ihre Werte über Prozeduraufrufe hinweg beibehalten. Der folgende Codeausschnitt demonstriert dies:
<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>
Beispielausgabe:
var2 | @var2 |
---|---|
2 | 2 |
2 | 3 |
2 | 4 |
Wie Sie sehen können, wird var2
jedes Mal neu initialisiert, während @var2
Wertänderungen über Aufrufe hinweg akkumuliert.
Fazit
Das Verständnis des Unterschieds zwischen @variable
und variable
ist für eine effektive MySQL-Entwicklung von entscheidender Bedeutung. Es ermöglicht Ihnen, Variablen basierend auf ihrem Umfang und ihrem Initialisierungsverhalten angemessen zu verwalten und so die Effizienz und Genauigkeit des Codes sicherzustellen.
Das obige ist der detaillierte Inhalt von@variable vs. Variable in MySQL: Was ist der Unterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!