In MySQL ist es nicht möglich, Variablen zu deklarieren und eine While-Schleife außerhalb einer gespeicherten Prozedur zu verwenden. Dies liegt daran, dass diese Konstrukte innerhalb der BEGIN...END-Klausel deklariert werden müssen, die nur in gespeicherten Prozeduren, Funktionen, Triggern und Ereignissen verfügbar ist.
Überwindung der Einschränkung
Wenn Sie Variablen deklarieren und eine While-Schleife außerhalb einer gespeicherten Prozedur verwenden müssen, können Sie eine temporär gespeicherte Prozedur erstellen, die diese Funktionalität kapselt. Hier ist eine Vorlage, der Sie folgen können:
<code class="sql">CREATE TEMPORARY PROCEDURE my_temp_proc() BEGIN DECLARE var1 INT; DECLARE var2 VARCHAR(255); WHILE var1 < 10 DO SET var2 = CONCAT(var2, 'Iteration ', var1, '\n'); SET var1 = var1 + 1; END WHILE; END</code>
Verwendung
Um die temporär gespeicherte Prozedur auszuführen und auf die deklarierten Variablen zuzugreifen, können Sie die folgenden Schritte verwenden:
Führen Sie die gespeicherte Prozedur aus:
<code class="sql">CALL my_temp_proc();</code>
Fragen Sie die deklarierten Variablen mithilfe der Tabelle INFORMATION_SCHEMA.ROUTINE_VARIABLES ab:
<code class="sql">SELECT ROUTINE_NAME, VARIABLE_NAME, VARIABLE_TYPE, VARIABLE_VALUE FROM INFORMATION_SCHEMA.ROUTINE_VARIABLES WHERE ROUTINE_NAME = 'my_temp_proc';</code>
Dadurch werden die Werte der deklarierten Variablen ausgegeben.
Das obige ist der detaillierte Inhalt vonKann MySQL Variablen deklarieren und While-Schleifen außerhalb gespeicherter Prozeduren verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!