Maison >base de données >tutoriel mysql >Comment puis-je parcourir toutes les lignes d'une table MySQL à l'aide d'une procédure stockée ?
Parcourir toutes les lignes d'une table à l'aide d'une procédure
Dans MySQL, parcourir toutes les lignes d'une table nécessite la création d'une procédure stockée. Une procédure vous permet d'encapsuler une série d'instructions SQL dans une seule unité et de les exécuter sous forme de bloc.
Création de la procédure
Pour parcourir toutes les lignes du tableau 'A' et effectuez des opérations spécifiques, créez une procédure en utilisant la syntaxe suivante :
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
Exécuter le Procédure
Une fois la procédure créée, elle peut être appelée en utilisant la syntaxe suivante :
CALL ROWPERROW();
Cela exécutera la procédure et parcourra chaque ligne du tableau 'A', effectuer les opérations spécifiées.
Exemple
Supposons que vous ayez deux tables, 'A' et 'B', avec les champs 'ID' et 'VAL'. La procédure suivante parcourt toutes les lignes du tableau « A » et copie les données dans le tableau « 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 ;
Pour exécuter la procédure et copier les données, exécutez la commande suivante :
CALL ROWPERROW();
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!