Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe einer gespeicherten Prozedur alle Zeilen in einer MySQL-Tabelle durchlaufen?
Durchlaufen aller Zeilen einer Tabelle mithilfe einer Prozedur
In MySQL erfordert das Durchlaufen aller Zeilen einer Tabelle das Erstellen einer gespeicherten Prozedur. Eine Prozedur ermöglicht es Ihnen, eine Reihe von SQL-Anweisungen in einer einzigen Einheit zu kapseln und sie als Block auszuführen.
Erstellen der Prozedur
Um alle Tabellenzeilen zu durchlaufen 'A' und führen Sie bestimmte Vorgänge aus. Erstellen Sie eine Prozedur mit der folgenden Syntax:
DROP PROCEDURE IF EXISTS ROWPERROW; -- Delete existing procedure if any DELIMITER ;; -- Change delimiter to avoid statement-by-statement execution CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; -- Declare a variable to count rows DECLARE i INT DEFAULT 0; -- Declare a variable for looping SELECT COUNT(*) INTO n FROM table_A; -- Get the total number of rows SET i = 0; -- Initialize loop counter WHILE i < n DO -- Insert the current row into table 'B' INSERT INTO table_B(ID, VAL) SELECT (ID, VAL) FROM table_A LIMIT i, 1; SET i = i + 1; -- Increment loop counter END WHILE; End; ;; DELIMITER ; -- Reset the delimiter
Ausführen der Prozedur
Sobald die Prozedur erstellt ist, kann sie mit der folgenden Syntax aufgerufen werden:
CALL ROWPERROW();
Dadurch wird die Prozedur ausgeführt und jede Zeile der Tabelle „A“ wird durchlaufen. Ausführen der angegebenen Vorgänge.
Beispiel
Angenommen, Sie haben zwei Tabellen, 'A' und „B“, mit den Feldern „ID“ und „VAL“. Die folgende Prozedur durchläuft alle Zeilen der Tabelle „A“ und kopiert die Daten in Tabelle „B“:
DROP PROCEDURE IF EXISTS ROWPERROW; DELIMITER ;; CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; DECLARE i INT DEFAULT 0; SELECT COUNT(*) INTO n FROM table_A; SET i = 0; WHILE i < n DO INSERT INTO table_B(ID, VAL) SELECT (ID, VAL) FROM table_A LIMIT i, 1; SET i = i + 1; END WHILE; End; ;; DELIMITER ;
Um die Prozedur auszuführen und die Daten zu kopieren, führen Sie den folgenden Befehl aus:
CALL ROWPERROW();
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer gespeicherten Prozedur alle Zeilen in einer MySQL-Tabelle durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!