Speichern der Ausgabe einer dynamischen SQL-Abfrage in einer Variablen mithilfe gespeicherter MySQL-Prozeduren
In gespeicherten MySQL-Prozeduren ist manchmal eine Ausführung erforderlich dynamische Abfragen durchführen und die Ausgabe in einer benutzerdefinierten Variablen speichern. So können Sie dies erreichen:
CREATE PROCEDURE procedure_name( IN query_text TEXT, OUT output_variable TEXT ) BEGIN SET output_variable = ''; SET @sql = query_text; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END
In dieser Prozedur deklarieren wir einen Eingabeparameter query_text, der die auszuführende dynamische Abfrage enthält, und einen Ausgabeparameter output_variable, der die Ausgabe der Abfrage speichert.
Wir setzen dann die Ausgabevariable auf einen leeren String und bereiten den Abfragetext als SQL-Anweisung mit dem PREPARE-Befehl vor. Die EXECUTE-Anweisung wird verwendet, um die vorbereitete Anweisung auszuführen, und DEALLOCATE PREPARE wird verwendet, um die damit verbundenen Ressourcen freizugeben.
Beispiel:
Nehmen wir an, wir haben eine Dynamik Abfrage, die die folgende Ausgabe generiert:
SELECT CONCAT('Value 1: ', value1, ' | ', 'Value 2: ', value2) AS output FROM table_name WHERE id = ?
Wir können eine Prozedur erstellen, um diese Abfrage auszuführen und die Ausgabe in einem zu speichern Variable:
CREATE PROCEDURE get_dynamic_output( IN input_id INT, OUT dynamic_output TEXT ) BEGIN SET dynamic_output = ''; SET @query = 'SELECT CONCAT('"'Value 1: '"', value1, '"" | '"', 'Value 2: '"', value2, '""') AS output FROM table_name WHERE id = ?'; PREPARE stmt FROM @query; SET @id = input_id; EXECUTE stmt USING @id; DEALLOCATE PREPARE stmt; END
Um diese Prozedur zu verwenden, können wir den Parameter input_id auf den gewünschten Wert setzen und ihn ausführen:
CALL get_dynamic_output(1, @output_value); SELECT @output_value;
Dadurch wird die Ausgabe der dynamischen Abfrage als gedruckt einzelne Textzeichenfolge.
Das obige ist der detaillierte Inhalt vonWie speichere ich dynamische SQL-Abfrageergebnisse in einer MySQL Stored Procedure-Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!