Dynamische Abfrageausführung und Ausgabezuweisung in einer gespeicherten MySQL-Prozedur
In MySQL ist es möglich, Abfragen innerhalb einer gespeicherten Prozedur dynamisch zu generieren und auszuführen . Um jedoch das Ergebnis einer dynamischen Abfrage einem OUT-Parameter zuzuweisen, ist ein etwas anderer Ansatz erforderlich.
Beachten Sie den in der Frage bereitgestellten gespeicherten Prozedurcode:
CREATE PROCEDURE 'searchInvoice' ( OUT numOfRecords INT ) BEGIN DECLARE query1 TEXT; DECLARE query2 TEXT; SET query1 = 'SELECT COUNT(*) bla bla bla.....'; // Query1 to select the count of matching tuples.. SET query2 = 'SELECT * from bla bla bla....'; // Query2 to select original records... // later part of this both queries generate dynamically according to some IN parameters.. // now I wanna assign the output of the query1 into numOfRecords // and I wanna execute the query2 as well.. like this SET @Sql = query2; PREPARE STMT FROM @Sql; EXECUTE STMT; DEALLOCATE PREPARE STMT; // output of the query2 can be read in PHP END
Zur Zuweisung des Ausgabe von query1 an den Parameter numOfRecords OUT, können die folgenden Schritte ausgeführt werden:
SET @numOfRecords = 0;
DECLARE query1Cursor CURSOR FOR query1; OPEN query1Cursor; FETCH query1Cursor INTO @numOfRecords; CLOSE query1Cursor;
SET numOfRecords = @numOfRecords;
Mit diesem modifizierten Ansatz kann die gespeicherte Prozedur sowohl dynamische Abfragen ausführen als auch die Ausgabe bestimmter Abfragen OUT zuweisen Parameter.
Das obige ist der detaillierte Inhalt vonWie ordne ich das Ergebnis einer dynamischen Abfrage einem OUT-Parameter in einer gespeicherten MySQL-Prozedur zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!