Heim > Datenbank > MySQL-Tutorial > Wie implementiert man eine rekursive gespeicherte Prozedur in MySQL zur Berechnung der Mengenhierarchie?

Wie implementiert man eine rekursive gespeicherte Prozedur in MySQL zur Berechnung der Mengenhierarchie?

Barbara Streisand
Freigeben: 2024-10-31 19:23:02
Original
491 Leute haben es durchsucht

How to Implement a Recursive Stored Procedure in MySQL for Calculating Quantity Hierarchy?

Rekursive gespeicherte Prozedur zur Berechnung der Mengenhierarchie

In MySQL ist die Erstellung einer rekursiven gespeicherten Prozedur zur Berechnung von Mengen für verschachtelte hierarchische Strukturen eine Herausforderung können mit einem sorgfältig ausgearbeiteten Verfahren überwunden werden. Betrachten Sie die angegebene Tabelle, in der jede Zeile einen Artikel mit einer zugehörigen Menge und einem potenziellen übergeordneten Element darstellt.

Rekursive gespeicherte Prozedur

Um diese baumartige Struktur rekursiv zu durchlaufen und zu berechnen Für die Gesamtmenge kann die folgende gespeicherte Prozedur implementiert werden:

<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>
Nach dem Login kopieren

Prozedurausführung

Um die Rekursion zu ermöglichen, ist es wichtig, die MySQL-Einstellungen anzupassen:

<code class="mysql">SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255;</code>
Nach dem Login kopieren

Sobald diese Einstellungen konfiguriert sind, kann die gespeicherte Prozedur wie folgt aufgerufen werden:

<code class="mysql">CALL calctotal(6, @total);
SELECT @total;</code>
Nach dem Login kopieren

Beispiel für eine rekursive Berechnung

Für die angegebenen Beispieldaten: Wenn Element 6 ein untergeordnetes Element von Element 5 ist, das wiederum ein untergeordnetes Element von Element 3 ist, usw., berechnet die gespeicherte Prozedur die Gesamtmenge rekursiv wie folgt:

4 * 2 * 10 * 3 = 240
Nach dem Login kopieren

Daher ist das Ergebnis des Aufrufs von Prozedur mit Nummer = 6 wird 240 sein.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine rekursive gespeicherte Prozedur in MySQL zur Berechnung der Mengenhierarchie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage