Das Erstellen einer rekursiven gespeicherten Prozedur in MySQL zur Bestimmung der berechneten Menge eines bestimmten Artikels erfordert das Verständnis der Tabellenstruktur und der rekursiven Logik.
Problemhintergrund
Gegeben eine Tabelle mit den Spalten „id“, „parent_id“ und „quantity“, besteht das Ziel darin, die Gesamtmenge eines Artikels zu berechnen rekursives Durchlaufen seiner Eltern-Kind-Beziehungen. Zum Beispiel hat Element 6 eine berechnete Menge von 240, weil seine Eltern 5 (Menge 4), 3 (Menge 2) und 2 (Menge 10) sind.
Lösung: Rekursive gespeicherte Prozedur
<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>
Prozeduraufruf
So rufen Sie die gespeicherte Prozedur auf und erhalten die berechnete Menge für Element 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>
Verfahrensaufschlüsselung
Das obige ist der detaillierte Inhalt vonWie können Sie rekursive gespeicherte Prozeduren verwenden, um berechnete Mengen in MySQL zu berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!