Heim > Datenbank > MySQL-Tutorial > MySQL-Variablen: Was ist der Unterschied zwischen „@Variablen' und Prozedurvariablen?

MySQL-Variablen: Was ist der Unterschied zwischen „@Variablen' und Prozedurvariablen?

Patricia Arquette
Freigeben: 2025-01-21 13:46:09
Original
559 Leute haben es durchsucht

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

Benutzerdefinierte MySQL-Variablen: @Variablen vs. Prozedurvariablen

MySQL bietet benutzerdefinierte Variablen, die durch ein führendes @-Symbol gekennzeichnet sind (z. B. @myVar). Diese @variables sind sitzungsbezogen; Sie werden innerhalb einer Sitzung initialisiert und bleiben bestehen, bis die Sitzung endet. Entscheidend ist, dass sie sich von Prozedurvariablen unterscheiden.

Im Gegensatz zu @variables sind Prozedurvariablen lokal für eine gespeicherte Prozedur. Bei jedem Aufruf einer Prozedur werden ihre lokalen Variablen auf NULL neu initialisiert. Dies steht in krassem Gegensatz zu @variables, deren Werte über mehrere Prozeduraufrufe innerhalb derselben Sitzung hinweg beibehalten werden. Das Ändern eines @variable innerhalb einer Prozedur wirkt sich auf seinen Wert für nachfolgende Aufrufe innerhalb dieser Sitzung aus.

Es ist auch wichtig, sowohl @variables als auch Prozedurvariablen von den MySQL-Systemvariablen zu unterscheiden. Systemvariablen sind entweder global (z. B. @@global.port) oder sitzungsbezogen (z. B. @@session.sql_mode). Sitzungssystemvariablen sind zwar sitzungsspezifisch, verhalten sich aber anders als @variables.

Lassen Sie uns den Unterschied veranschaulichen:

<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>
Nach dem Login kopieren

Die Ausgabe zeigt:

<code>myProcVar  @myUserVar
---------  ----------
2           2
2           3
2           4</code>
Nach dem Login kopieren

Beachten Sie, dass myProcVar (die Prozedurvariable) bei jedem Aufruf auf 2 zurückgesetzt wird, während @myUserVar (die benutzerdefinierte Variable) kumulativ inkrementiert und ihren Wert über alle Aufrufe hinweg beibehält.

Dieses Verständnis ist entscheidend für die effektive Nutzung von MySQL-Variablen. @variables Sitzungsdaten verwalten, Prozedurvariablen verwalten den lokalen Prozedurstatus und Systemvariablen steuern die Datenbankumgebung.

Das obige ist der detaillierte Inhalt vonMySQL-Variablen: Was ist der Unterschied zwischen „@Variablen' und Prozedurvariablen?. 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