Créer une procédure stockée récursive dans MySQL pour déterminer la quantité calculée d'un élément donné nécessite de comprendre la structure de la table et la logique récursive.
Contexte du problème
Étant donné un tableau avec les colonnes « id », « parent_id » et « quantité », l'objectif est de calculer la quantité totale d'un article en traversant récursivement ses relations parent-enfant. Par exemple, l'élément 6 a une quantité calculée de 240 car ses parents sont 5 (quantité 4), 3 (quantité 2) et 2 (quantité 10).
Solution : procédure stockée récursive
<code class="mysql">DELIMITER $$ CREATE PROCEDURE calctotal( IN number INT, OUT total INT ) BEGIN DECLARE parent_ID INT DEFAULT NULL ; DECLARE tmptotal INT DEFAULT 0; DECLARE tmptotal2 INT DEFAULT 0; SELECT parentid FROM test WHERE id = number INTO parent_ID; SELECT quantity FROM test WHERE id = number INTO tmptotal; IF parent_ID IS NULL THEN SET total = tmptotal; ELSE CALL calctotal(parent_ID, tmptotal2); SET total = tmptotal2 * tmptotal; END IF; END$$ DELIMITER ;</code>
Invocation de procédure
Pour appeler la procédure stockée et obtenir la quantité calculée pour l'élément 6 :
<code class="mysql">SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255; CALL calctotal(6, @total); SELECT @total;</code>
Répartition de la procédure
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!