Variablen als SQL Query in MySQL
Nutzung des Inhaltes einer Variable als Teil eines Querys in MySQL.
Hallo,
ich möchte in MySQL eine Funktion erstellen, mit deren Hilfe ich Elemente zu einer Tabelle hinzufügen kann.
Das funktioniert sehr gut, ist nur futchtbar langsam bei vielen Elementen.
Deswegen hab ich mir überlegt, einen Puffer zu erzeugen (Session Variable) und diesen dann in einem Rutsch und in
einem Query hinzuzufügen, da das Ganze mindestens um den Faktor 1000 schneller ist.
Folgende 2 Funktionen habe ich hierfür implementiert.
1. Ein Element mit 2 Werten dem Puffer (einem String in dem ein Tel des finalen Queries aufgebaut wird) hinzufügen
2. Den Puffer als Query ausführen
Leider scheint MySQL die Session-Variable in der Flush-Funktion nicht korrekt auszuwerten.
Weiß jemand wie ich MySQL überreden kann, den Inhalt der Variable @element_buffer als Teil des Querys zu interpretieren?
Der Fehlercode ist, dass die Anzahl der einzufügenden Spalten nicht mit den ausgewählten übereinstimmt.
Vielen Dank,
Eric
Hallo,
ich möchte in MySQL eine Funktion erstellen, mit deren Hilfe ich Elemente zu einer Tabelle hinzufügen kann.
Das funktioniert sehr gut, ist nur futchtbar langsam bei vielen Elementen.
Deswegen hab ich mir überlegt, einen Puffer zu erzeugen (Session Variable) und diesen dann in einem Rutsch und in
einem Query hinzuzufügen, da das Ganze mindestens um den Faktor 1000 schneller ist.
Folgende 2 Funktionen habe ich hierfür implementiert.
1. Ein Element mit 2 Werten dem Puffer (einem String in dem ein Tel des finalen Queries aufgebaut wird) hinzufügen
2. Den Puffer als Query ausführen
Leider scheint MySQL die Session-Variable in der Flush-Funktion nicht korrekt auszuwerten.
Weiß jemand wie ich MySQL überreden kann, den Inhalt der Variable @element_buffer als Teil des Querys zu interpretieren?
Der Fehlercode ist, dass die Anzahl der einzufügenden Spalten nicht mit den ausgewählten übereinstimmt.
Vielen Dank,
Eric
CREATE PROCEDURE `add_element_to_buffer`(
ELEMENT_VALUE_1 INT,
ELEMENT_VALUE_2 INT)
BEGIN
-- add needed commas to separate the elements in the string
IF @ELEMENT_BUFFER <> "" THEN
SET @ELEMENT_BUFFER = CONCAT_WS("", @ELEMENT_BUFFER, ", ");
END IF;
-- add element to the buffer string
-- in the format: "(value_1, value_2)"
SET @ELEMENT_BUFFER = CONCAT_WS("", @ELEMENT_BUFFER, "(",
ELEMENT_VALUE_1, ",",
ELEMENT_VALUE_2, ")" );
END
$$
CREATE PROCEDURE `flush_element_buffer`()
BEGIN
-- add the elements from the buffer
INSERT INTO `elemt_element` (
`elemt_value_1`,
`elemt_value_2`)
VALUES (
@ELEMENT_BUFFER -- <=== Hier ist das Problem
);
-- clear the buffer
SET @ELEMENT_BUFFER = "";
END
$$
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159810
Url: https://administrator.de/forum/variablen-als-sql-query-in-mysql-159810.html
Ausgedruckt am: 17.04.2025 um 01:04 Uhr
1 Kommentar