Heim > Datenbank > MySQL-Tutorial > Benutzerdefinierte Variablen vs. Prozedurvariablen in MySQL: Was ist der Unterschied?

Benutzerdefinierte Variablen vs. Prozedurvariablen in MySQL: Was ist der Unterschied?

Mary-Kate Olsen
Freigeben: 2025-01-21 14:01:10
Original
498 Leute haben es durchsucht

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

Vergleich von benutzerdefinierten Variablen und Prozessvariablen in MySQL

In MySQL werden benutzerdefinierte Variablen mit einem @-Präfix deklariert, während Prozedurvariablen kein Präfix haben. Diese Unterscheidung ergibt sich aus der Tatsache, dass sitzungsspezifische benutzerdefinierte Variablen ihren Wert während einer Sitzung behalten, während Prozedurvariablen bei jedem Prozeduraufruf erneut auf NULL initialisiert werden.

Sitzungsspezifische Variablen (@variable)

Benutzerdefinierte Variablen mit dem Präfix @ fungieren als sitzungsspezifische Variablen. Sie können mit einer SET-Anweisung oder in einer Abfrage initialisiert werden und bleiben bis zum Ende der Sitzung bestehen. Zum Beispiel:

<code class="language-sql">SET @var = 1;</code>
Nach dem Login kopieren

Prozessvariable (Variable)

In einer gespeicherten Prozedur oder Funktion ohne Präfix deklarierte Variablen sind lokale Variablen. Diese Variablen sind nur im Rahmen der Prozedur verfügbar und werden bei jedem Prozeduraufruf neu auf NULL initialisiert.

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    ...
END;</code>
Nach dem Login kopieren

Hauptunterschiede

Die folgende Tabelle fasst die Hauptunterschiede zwischen @ Variablen und Prozessvariablen zusammen:

Funktionen @variable (sitzungsspezifisch) Variable (Prozessvariable) Geltungsbereich Letzt für die gesamte Sitzung Bei jedem Prozeduraufruf neu initialisiert Syntax Vorangestellt mit
特性 @variable (会话特定) variable (过程变量)
作用域 持续整个会话 每次过程调用时重新初始化
语法 @ 为前缀 没有前缀
Kein Präfix

Beispiel

Betrachten Sie die folgende gespeicherte Prozedur:

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    SET var2 = var2 + 1;
    SET @var2 = @var2 + 1;
    ...
END;</code>
Nach dem Login kopieren

Jedes Mal, wenn diese Prozedur aufgerufen wird, wird var2 auf 1 zurückgesetzt und @var2 wird weiter erhöht. Dies zeigt das Reinitialisierungsverhalten von Prozessvariablen und die sitzungsspezifische Natur benutzerdefinierter Variablen.

Das obige ist der detaillierte Inhalt vonBenutzerdefinierte Variablen vs. Prozedurvariablen in MySQL: Was ist der Unterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage