Maison  >  Article  >  base de données  >  retour de la procédure stockée MySQL

retour de la procédure stockée MySQL

PHPz
PHPzoriginal
2023-05-11 18:07:07647parcourir

La procédure stockée MySQL est une collection d'instructions SQL pré-écrites qui peuvent être appelées comme une unité. Les procédures stockées MySQL présentent de nombreux avantages, tels que l'amélioration des performances de la base de données, la réduction du trafic réseau, l'unification et la simplification de la logique métier et l'amélioration de la sécurité. Cependant, lors de l'utilisation des procédures stockées MySQL, nous devons parfois également renvoyer un ensemble de résultats. Cet article explique comment utiliser les procédures stockées MySQL pour renvoyer un ensemble de résultats.

  1. Création de procédures stockées

La création d'une procédure stockée MySQL est très simple et peut être effectuée via l'instruction CREATE PROCEDURE. Voici un exemple simple de procédure stockée qui accepte deux paramètres entiers, les ajoute et renvoie le résultat :

DELIMITER //
CREATE PROCEDURE add_numbers(IN num1 INT, IN num2 INT, OUT result INT)
BEGIN
SET result = num1 + num2;
END //
DELIMITER ;

  1. Appeler la procédure stockée

Appeler la procédure stockée est également très simple, utilisez simplement l'instruction CALL. Voici un exemple qui appelle la procédure stockée créée ci-dessus et imprime les résultats sur la console :

SET @a = 1;
SET @b = 2;
CALL add_numbers(@a, @b, @ result);
SELECT @result;

  1. Renvoyer un jeu de résultats

Si vous devez renvoyer un jeu de résultats dans une procédure stockée MySQL, vous pouvez utiliser CURSOR. CURSOR peut être utilisé pour parcourir un ensemble de résultats et enregistrer les résultats dans une variable. Voici un exemple qui renvoie un ensemble de résultats pour une liste de produits :

DELIMITER //
CREATE PROCEDURE get_product_list()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE id INT;
DECLARE name VARCHAR(255);

DECLARE cur CURSOR FOR SELECT id, name FROM products;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

CREATE TABLE IF NOT EXISTS temp_product_list(id INT, name VARCHAR(255));
TRUNCATE TABLE temp_product_list;

OPEN cur ;

read_loop: LOOP

FETCH cur INTO id, name;
IF done THEN
  LEAVE read_loop;
END IF;

INSERT INTO temp_product_list(id, name)
VALUES(id, name);

END LOOP;

CLOSE cur;

SELECT * FROM temp_product_list;
END //
DELIMITER ;

Dans le code ci-dessus, nous créons d'abord un objet CURSOR et spécifions la liste des produits à requête. En parcourant l'ensemble de résultats, nous insérons les résultats dans la table temp_product_list un par un. Enfin, nous renvoyons les résultats de la requête.

  1. Traitement des résultats renvoyés

Lors de l'appel d'une procédure stockée, nous pouvons utiliser l'instruction SELECT pour traiter l'ensemble de résultats renvoyé. Par exemple :

CALL get_product_list();

Cette instruction appellera la procédure stockée get_product_list et renverra un ensemble de résultats. Nous pouvons utiliser l'instruction SELECT pour afficher l'ensemble de résultats sur la console :

SELECT * FROM temp_product_list

Cette instruction affichera tous les résultats dans la table temp_product_list;

Résumé

Les procédures stockées MySQL sont une technologie très utile qui peut nous aider à améliorer les performances des bases de données, à réduire le trafic réseau, à unifier et à simplifier la logique métier, à améliorer la sécurité, etc. En utilisation réelle, nous devrons peut-être renvoyer un ensemble de résultats. Dans ce cas, nous pouvons utiliser CURSOR pour parcourir les résultats de la requête et enregistrer les résultats dans une table. Enfin, nous pouvons utiliser l'instruction SELECT pour traiter l'ensemble de résultats renvoyé. Grâce à l'introduction de cet article, je pense que les lecteurs comprendront mieux comment utiliser les procédures stockées MySQL pour renvoyer des ensembles 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