Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe einer gespeicherten Prozedur alle Zeilen in einer MySQL-Tabelle durchlaufen?

Wie kann ich mithilfe einer gespeicherten Prozedur alle Zeilen in einer MySQL-Tabelle durchlaufen?

Susan Sarandon
Freigeben: 2024-11-15 06:39:02
Original
429 Leute haben es durchsucht

How can I iterate through all rows in a MySQL table using a stored procedure?

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
Nach dem Login kopieren

Ausführen der Prozedur

Sobald die Prozedur erstellt ist, kann sie mit der folgenden Syntax aufgerufen werden:

CALL ROWPERROW();
Nach dem Login kopieren
Nach dem Login kopieren

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 ;
Nach dem Login kopieren

Um die Prozedur auszuführen und die Daten zu kopieren, führen Sie den folgenden Befehl aus:

CALL ROWPERROW();
Nach dem Login kopieren
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage