Parcourir les lignes d'une table MySQL
Dans MySQL, parcourir les lignes d'une table peut être réalisé à l'aide d'une procédure ou d'un curseur approche. Cet article explore les deux méthodes en fonction d'un scénario spécifique impliquant la copie de données du tableau A vers le tableau B.
Approche basée sur une procédure
Une procédure encapsule un ensemble d'opérations qui peut parcourir les lignes d’une table. Voici un exemple de procédure :
DELIMITER ;; CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; DECLARE i INT DEFAULT 0; SELECT COUNT(*) FROM table_A INTO n; 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; ;;
Après avoir créé la procédure, vous pouvez l'exécuter à l'aide de CALL ROWPERROW();.
Approche basée sur le curseur
Les curseurs permettent de parcourir un ensemble de lignes renvoyées par une requête. Voici une approche basée sur le curseur :
DELIMITER ;; CREATE PROCEDURE cursor_ROWPERROW() BEGIN DECLARE cursor_ID INT; DECLARE cursor_VAL VARCHAR; DECLARE done INT DEFAULT FALSE; DECLARE cursor_i CURSOR FOR SELECT ID,VAL FROM table_A; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID, cursor_VAL; IF done THEN LEAVE read_loop; END IF; INSERT INTO table_B(ID, VAL) VALUES(cursor_ID, cursor_VAL); END LOOP; CLOSE cursor_i; END; ;;
N'oubliez pas de déclarer les variables avec les types de données appropriés et de gérer toutes les erreurs ou exceptions.
Considérations
Les approches basées sur les procédures et sur les curseurs peuvent être utilisées pour parcourir les lignes du tableau. Cependant, les méthodes basées sur des procédures sont moins flexibles que les curseurs. Les curseurs permettent des opérations plus complexes, telles que la mise à jour de plusieurs lignes à la fois.
Pour des raisons de performances, les requêtes basées sur des ensembles sont généralement préférables aux mécanismes de boucle. Cependant, pour des tâches complexes ou des scénarios nécessitant des mises à jour en temps réel, des approches en boucle peuvent être nécessaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!