Select*fromstudent_info;+----- +-- -------+----------+----------------+|id |Nom |Adresse"/> Select*fromstudent_info;+----- +-- -------+----------+----------------+|id |Nom |Adresse">
Maison >base de données >tutoriel mysql >Comment traitons-nous les jeux de résultats dans les procédures stockées MySQL ?
Nous pouvons utiliser des curseurs pour traiter le résultat défini dans la procédure stockée. Fondamentalement, les curseurs nous permettent de parcourir un ensemble de lignes renvoyées par une requête et de traiter chaque ligne en conséquence.
Pour démontrer l'utilisation de CURSOR dans les procédures stockées MySQL, nous créons la procédure stockée suivante qui est basée sur les valeurs de la table nommée "student_info" comme indiqué ci-dessous -
mysql> Select * from student_info; +-----+---------+----------+------------+ | id | Name | Address | Subject | +-----+---------+----------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 125 | Raman | Shimla | Computers | +-----+---------+----------+------------+ 3 rows in set (0.00 sec)
La requête suivante créera un fichier nommé procédure "list_address" qui renvoie une liste de toutes les adresses stockées dans la table -
mysql> Delimiter // mysql> CREATE PROCEDURE list_address (INOUT address_list varchar(255)) -> BEGIN -> DECLARE value_finished INTEGER DEFAULT 0; -> DECLARE value_address varchar(100) DEFAULT ""; -> DEClARE address_cursor CURSOR FOR -> SELECT address FROM student_info; -> DECLARE CONTINUE HANDLER -> FOR NOT FOUND SET value_finished = 1; -> OPEN address_cursor; -> get_address: LOOP -> FETCH address_cursor INTO value_address; -> IF value_finished = 1 THEN -> LEAVE get_address; -> END IF; -> SET address_list = CONCAT(value_address,";",address_list); -> END LOOP get_address; -> CLOSE address_cursor; -> END // Query OK, 0 rows affected (0.00 sec)
Maintenant, lorsque nous appelons cette procédure, nous pouvons voir le résultat suivant -
mysql> DELIMITER ; mysql> Set @address_list = ""; Query OK, 0 rows affected (0.00 sec) mysql> CALL list_address(@address_list); Query OK, 0 rows affected (0.00 sec) mysql> Select @address_list; +-------------------------+ | @address_list | +-------------------------+ | Shimla;Jaipur;Amritsar; | +-------------------------+ 1 row in set (0.00 sec)
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!