In MySQL-Versionen 5.0.13 und höher kann dynamisches SQL in gespeicherten Prozeduren implementiert werden.
Dynamische SQL-Anweisungen erstellen:
Um dynamische SQL-Anweisungen zu erstellen, wird die Funktion CONCAT() verwendet zum Verketten von Zeichenfolgen und zum dynamischen Erstellen von SQL-Anweisungen. Hier ist ein Beispiel:
SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
Im obigen Beispiel würde @s die dynamische SQL-Anweisung enthalten:
SELECT col FROM tbl
Dynamische Anweisungen vorbereiten und ausführen:
Sobald die dynamische SQL-Anweisung erstellt ist, muss sie vorbereitet und erstellt werden ausgeführt:
PREPARE stmt FROM @s; EXECUTE stmt;
Freigabe vorbereiteter Anweisungen:
Nach der Ausführung muss die vorbereitete Anweisung freigegeben werden, um Ressourcen freizugeben:
DEALLOCATE PREPARE stmt;
Einschränkungen:
Dynamisches SQL wird in gespeicherten Prozeduren unterstützt, jedoch nicht in Funktionen oder Trigger.
Beispiel:
Die folgende gespeicherte Prozedur demonstriert dynamisches SQL:
delimiter // CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64)) BEGIN SET @s = CONCAT('SELECT ',col,' FROM ',tbl ); PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt; END // delimiter ;
Das obige ist der detaillierte Inhalt vonWie kann ich dynamisches SQL in gespeicherten MySQL-Prozeduren verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!