Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Verwenden von Ergebnissen gespeicherter Prozeduren zum Definieren einer IN-Anweisung

Welchen Rückgabetyp hat Ihre aktuelle gespeicherte Prozedur? Sie sprechen von "einer Liste", also TEXT?

Vielleicht gibt es einen einfacheren Weg, aber Sie können (innerhalb einer anderen gespeicherten Prozedur) eine weitere Abfrage erstellen.

Dazu müssen wir zwei Einschränkungen von MySQL umgehen:a) Um dynamisches SQL innerhalb einer gespeicherten Prozedur auszuführen, muss es sich um eine vorbereitete Anweisung handeln. b) Vorbereitete Anweisungen können nur aus Benutzervariablen erstellt werden. Das vollständige SQL lautet also:

SET @the_list = myStoredProc();
SET @the_query = CONCAT('SELECT * FROM myTable WHERE columnName IN (' , @the_list , ')');
PREPARE the_statement FROM @the_query;
EXECUTE the_statement;

Wenn Sie davon sprechen, eine Ergebnismenge aus einer gespeicherten Routine zurückzugeben und sie dann als Tabelle zu verwenden, ist dies nicht möglich. Sie müssen eine temporäre Tabelle erstellen, um diese Einschränkung zu umgehen .