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

So verwenden Sie die Tabellenausgabe aus einer gespeicherten MYSQL-Prozedur

Dies ist nicht direkt möglich, da die Ausgabe einer unbegrenzten Auswahl in einer gespeicherten Prozedur eine an den Client gesendete Ergebnismenge ist, aber technisch gesehen keine Tabelle.

Die Problemumgehung besteht darin, den Prozess die Daten in einer temporären Tabelle ablegen zu lassen, nachdem die Tabelle für Sie erstellt wurde. Diese Tabelle ist nur für Ihre Verbindung verfügbar, wenn der Vorgang abgeschlossen ist. Es wird keinen Konflikt verursachen, wenn jemand anderes den Prozess zur gleichen Zeit ausführt und für keine andere Verbindung sichtbar ist.

Fügen Sie dies der Prozedur hinzu:

DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;

Wenn Ihr Vorgang abgeschlossen ist, SELECT * FROM foo; wird Ihnen das geben, was Sie vom Proc bekommen hätten. Sie können fast wie an jedem Tisch daran teilnehmen.

Wenn Sie fertig sind, lassen Sie es fallen, oder es verschwindet von selbst, wenn Sie die Verbindung trennen. Wenn Sie den Prozess erneut ausführen, wird er gelöscht und neu erstellt.