Maison  >  Article  >  base de données  >  Discussion des jeux de résultats dans les procédures stockées MySQL

Discussion des jeux de résultats dans les procédures stockées MySQL

PHPz
PHPzoriginal
2023-04-21 11:19:57611parcourir

MySQL est le système de gestion de base de données SQL open source le plus populaire au monde. Sa stabilité, ses performances et sa fiabilité en font la base de données préférée pour un usage professionnel et personnel. MySQL fournit une méthode de procédure stockée (Stored Procedure) qui permet aux utilisateurs d'écrire des programmes à l'aide d'instructions SQL dans MySQL, et ces programmes peuvent être appelés comme d'autres programmes. Les procédures stockées MySQL présentent de nombreux avantages, tels que la réduction du volume de transmission sur le réseau, l'accélération de la récupération des données, l'amélioration des performances, etc. Dans cet article, nous discuterons des jeux de résultats dans les procédures stockées MySQL.

1. Présentation

Dans MySQL, une procédure stockée est un bloc pré-écrit d'instructions SQL qui peut être exécutée sur le serveur MySQL. Les procédures stockées peuvent stocker, exécuter et réutiliser des tâches qui accomplissent des tâches courantes dans MySQL, simplifiant ainsi la programmation SQL complexe pour ceux qui découvrent SQL. Par rapport aux instructions SQL traditionnelles, l'avantage des procédures stockées est qu'elles peuvent être exécutées côté serveur, réduisant ainsi la quantité de transmission réseau et la sérialisation des données.

Les procédures stockées MySQL peuvent renvoyer des résultats, qui peuvent être des valeurs scalaires ou des ensembles de résultats. Pour les valeurs scalaires, la procédure stockée peut renvoyer via des paramètres OUT ou renvoyer des valeurs ; pour les jeux de résultats, vous devez utiliser des curseurs pour les traiter. MySQL prend en charge l'utilisation de curseurs pour traiter les jeux de résultats, car les jeux de résultats renvoyés par les procédures stockées sont généralement constitués de plusieurs lignes. Un curseur est un pointeur qui indique une ligne de données dans un jeu de résultats. Lorsque vous utilisez un curseur, vous pouvez parcourir l'ensemble de résultats et enregistrer les lignes dans des variables.

2. Curseurs dans les procédures stockées

Lors de l'utilisation de procédures stockées pour lire des données, les curseurs sont un outil très utile. Les curseurs permettent aux utilisateurs de parcourir un ensemble de résultats et d'enregistrer les données qu'il contient dans des variables spécifiques. MySQL rend l'utilisation des curseurs très simple. Les développeurs n'ont qu'à fournir une instruction SELECT et à l'encapsuler dans une procédure stockée. Voici un exemple de procédure stockée utilisant un curseur :

DELIMITER //
CREATE PROCEDURE example_proc ()example_proc ()
BEGIN

DECLARE done INT DEFAULT FALSE;
DECLARE a INT;
DECLARE b VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
    FETCH cur INTO a, b;
    IF done THEN
        LEAVE read_loop;
    END IF;
    SELECT CONCAT(a, ':', b);
END LOOP;
CLOSE cur;

END //
DELIMITER ;

在上面的代码中,我们首先定义了一个游标变量,SELECT语句从users表中读取id和name两列。然后,打开游标并遍历结果集。变量a和b分别保存游标当前行的值。如果我们已经遍历了结果集,则done变量将赋值为TRUE。如果done为TRUE,则退出循环并关闭游标。最后,使用SELECT语句打印出每个行的值。

三、存储过程中的结果集

当存储过程需要输出结果集时,我们需要使用游标。MySQL允许我们声明一个游标变量(CURSOR),然后使用它来处理结果集。下面是一个带有结果集的示例存储过程:

DELIMITER //
CREATE PROCEDURE example_procBEGIN

DECLARE done INT DEFAULT FALSE;
DECLARE a INT;
DECLARE b VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
CREATE TEMPORARY TABLE results (id INT, name VARCHAR(255));
OPEN cur;
read_loop: LOOP
    FETCH cur INTO a, b;
    IF done THEN
        LEAVE read_loop;
    END IF;
    INSERT INTO results (id, name) VALUES (a, b);
END LOOP;
CLOSE cur;
SELECT * FROM results;
END //

DELIMITER ;

Dans le code ci-dessus, nous définissons d'abord A La variable curseur est créée et l'instruction SELECT lit les colonnes id et name de la table des utilisateurs. Ensuite, ouvrez un curseur et parcourez l’ensemble de résultats. Les variables a et b stockent respectivement la valeur de la ligne actuelle du curseur. Si nous avons déjà parcouru l'ensemble de résultats, la variable done se verra attribuer TRUE. Si done est VRAI, quittez la boucle et fermez le curseur. Enfin, utilisez une instruction SELECT pour imprimer la valeur de chaque ligne.

3. Ensemble de résultats dans la procédure stockée

Lorsque la procédure stockée doit générer un ensemble de résultats, nous devons utiliser un curseur. MySQL nous permet de déclarer une variable de curseur (CURSOR) puis de l'utiliser pour traiter l'ensemble de résultats. Voici un exemple de procédure stockée avec un jeu de résultats :

DELIMITER //🎜CREATE PROCEDURE example_proc ()🎜BEGIN🎜rrreee🎜END //🎜DELIMITER ;🎜🎜Dans le code ci-dessus, nous d'abord, une variable de curseur cur est définie et les colonnes id et name de la table user sont lues dans l'instruction SELECT. Ensuite, nous utilisons la commande CREATE TEMPORARY TABLE pour créer une table temporaire de résultats pour stocker les résultats de la lecture du curseur. Ouvrez un curseur et utilisez l'instruction INSERT INTO pour insérer chaque ligne dans le jeu de résultats. Enfin, nous utilisons une instruction SELECT pour récupérer toutes les lignes de la table de résultats dans l'ordre. 🎜🎜4. Conclusion🎜🎜La prise en charge par MySQL des procédures stockées permet aux utilisateurs d'écrire des programmes qui utilisent des instructions SQL, et ces programmes peuvent être appelés comme d'autres programmes. Les procédures stockées peuvent réduire le volume de transmission du réseau, accélérer la récupération des données, améliorer les performances, etc. Vous pouvez utiliser un curseur pour parcourir l'ensemble de résultats et enregistrer les données dans une variable spécifique. Le curseur est un pointeur vers la ligne de données dans l'ensemble de résultats. Les curseurs permettent aux utilisateurs de traiter les ensembles de résultats de manière plus flexible. Lorsqu'une procédure stockée doit générer un ensemble de résultats, nous devons utiliser un curseur pour traiter l'ensemble de résultats. MySQL nous permet de déclarer une variable de curseur puis de l'utiliser pour traiter l'ensemble de résultats. 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn