Frage

Ich habe eine MSSQL gespeicherte Prozedur zu konvertieren, die eine varchar gibt, der eine Abfrage:

INSERT INTO Results
  EXEC (@Expresion);

Das funktioniert nicht. Ich bin mir ziemlich sicher, dass EXEC und EXECUTE sind nicht MySQL-Befehle, aber CALL funktioniert auch nicht.

Wer weiß, ob es überhaupt möglich ist so etwas wie JavaScript ist eval Funktion für MySQL haben?

War es hilfreich?

Lösung

EXECUTE ist ein gültiger Befehl in MySQL. MySQL-Referenzhandbuch

Andere Tipps

Ich glaube, Sie suchen etwas wie folgt aus:

SET @queryString = (
SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM (
    SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( 
           SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 
    ) as qwe 
) as www
);

PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 
SET @asd = NULL;

Dies ist das SQL-Äquivalent von eval(my_string);:

@Expression = 'SELECT "Hello, World!";';
PREPARE myquery FROM @Expression;
EXECUTE myquery;

Im Grunde kombiniert ich die vorhandenen Antworten, weder erfahren Sie, wie eval genau das tun.


Wenn Sie Parameter hinzufügen möchten, können Sie diese verwenden:

@username = "test";
@password = "asdf";
@Expression = 'SELECT id FROM Users WHERE name = ? AND pass = ?;'
PREPARE myquery FROM @Expression;
EXECUTE myquery USING @username, @password;

Und die ursprüngliche Frage zu beantworten, genau:

@Expression = 'SELECT "Hello, World!";'
PREPARE myquery FROM @Expression;
INSERT INTO Results
  EXECUTE myquery;

Beachten Sie, dass die PREPARE ... FROM Anweisung einer Session-Variablen (mit dem Präfix @) will. Wenn Sie versuchen, eine normale Variable zu übergeben, wird er seine Hände in die Luft werfen und es wird nur nicht.

Die EXECUTE MySQL-Befehl kann nur für einen verwendet werden vorbereitete Aussage.

Wenn Fall, dass Sie mehrere Abfragen aus der Zeichenfolge auszuführen, sollten Sie sie in der Datei und Quell es zu speichern, z.

SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top