Maison >base de données >tutoriel mysql >Comment puis-je parcourir des ensembles de résultats MySQL à l'aide de procédures stockées ?

Comment puis-je parcourir des ensembles de résultats MySQL à l'aide de procédures stockées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-19 00:42:021019parcourir

How Can I Loop Over MySQL Result Sets Using Stored Procedures?

Bouclage sur les ensembles de résultats dans MySQL : une approche basée sur des procédures

Les programmeurs doivent souvent traiter les résultats des requêtes MySQL en boucle. Cette tâche est généralement accomplie à l'aide de la fonction mysql_fetch_assoc en PHP ou de méthodes similaires dans d'autres langages de programmation. Cependant, il est également possible de créer une procédure stockée dans MySQL qui boucle sur les résultats d'une requête.

Pour y parvenir, on peut utiliser un modèle de procédure stockée comme celui-ci :

CREATE PROCEDURE GetFilteredData()
BEGIN
  DECLARE bDone INT;

  DECLARE var1 CHAR(16); 
  DECLARE var2 INT;
  DECLARE var3 VARCHAR(50);
  
  DECLARE curs CURSOR FOR SELECT something FROM somewhere WHERE some stuff;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;

  DROP TEMPORARY TABLE IF EXISTS tblResults;
  CREATE TEMPORARY TABLE IF NOT EXISTS tblResults  (
    Fld1 type,
    Fld2 type,
    ...
  );

  OPEN curs;

  SET bDone = 0;
  REPEAT
    FETCH curs INTO var1, var2, var3;

    IF whatever_filtering_desired
       INSERT INTO tblResults VALUES (var1, var2, var3);
    END IF;
  UNTIL bDone END REPEAT;

  CLOSE curs;
  SELECT * FROM tblResults;
END

Considérations :

  • Il est recommandé de paramétrer la requête, notamment les critères de recherche, pour augmenter la durée de vie de la procédure stockée flexibilité.
  • Envisagez de transmettre un ID de session dans les scénarios multi-sessions pour garantir des noms de table temporaires uniques.
  • Bien que les curseurs fournissent une approche procédurale pour parcourir les résultats, leur utilisation peut s'avérer inutile ou nuire aux performances. limitant. Il est conseillé d'explorer des solutions SQL purement déclaratives.

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