MySQL ne fournit pas de mécanisme de boucle intégré pour parcourir les lignes du tableau. Cependant, il existe plusieurs approches pour obtenir cette fonctionnalité :
Cette méthode consiste à utiliser des curseurs pour naviguer dans les lignes du tableau. Les curseurs agissent comme un pointeur vers une ligne spécifique dans un tableau. L'extrait de code suivant montre comment utiliser les curseurs :
DROP PROCEDURE IF EXISTS loop_through_rows; DELIMITER ;; CREATE PROCEDURE loop_through_rows() BEGIN DECLARE cursor_id INT; DECLARE cursor_val VARCHAR; DECLARE done INT DEFAULT FALSE; DECLARE cursor CURSOR FOR SELECT ID, VAL FROM table_A; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cursor; read_loop: LOOP FETCH cursor INTO cursor_id, cursor_val; IF done THEN LEAVE read_loop; END IF; -- Perform operations on cursor_id and cursor_val END LOOP; CLOSE cursor; END; ;; DELIMITER ;
Cette approche utilise une boucle WHILE pour récupérer et traiter les lignes à plusieurs reprises. La boucle continue jusqu'à ce que toutes les lignes aient été traitées. Le code suivant illustre cette méthode :
SET @record = 0; SET @last_record = (SELECT COUNT(*) FROM table_A); WHILE @record < @last_record DO -- Perform operations on the current @record SET @record = @record + 1; END WHILE;
Vous pouvez créer une procédure stockée qui encapsule la fonctionnalité de boucle. Cela vous permet d'exécuter la procédure et de parcourir les lignes.
DROP PROCEDURE IF EXISTS loop_rows; DELIMITER ;; CREATE PROCEDURE loop_rows(IN table_name VARCHAR(255)) BEGIN SET @record = 0; SET @last_record = (SELECT COUNT(*) FROM table_name); WHILE @record < @last_record DO -- Perform operations on the current @record SET @record = @record + 1; END WHILE; END; ;; DELIMITER ;
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!