Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Prosedur Tersimpan Rekursif dalam MySQL untuk Mengira Hierarki Kuantiti?
Prosedur Tersimpan Rekursif untuk Mengira Hierarki Kuantiti
Dalam MySQL, mencipta prosedur tersimpan rekursif untuk mengira kuantiti bagi struktur hierarki bersarang merupakan satu cabaran yang boleh diatasi dengan menggunakan prosedur yang dibuat dengan teliti. Pertimbangkan jadual yang diberikan, di mana setiap baris mewakili item dengan kuantiti yang berkaitan dan potensi induk.
Prosedur Tersimpan Rekursif
Untuk melintasi struktur seperti pokok ini secara rekursif dan mengira jumlah kuantiti, prosedur tersimpan berikut boleh dilaksanakan:
<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>
Pelaksanaan Prosedur
Untuk mendayakan rekursi, adalah penting untuk melaraskan tetapan MySQL:
<code class="mysql">SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255;</code>
Setelah tetapan ini dikonfigurasikan, prosedur tersimpan boleh digunakan seperti ini:
<code class="mysql">CALL calctotal(6, @total); SELECT @total;</code>
Contoh Pengiraan Rekursif
Untuk data sampel yang diberikan, di mana item 6 adalah anak item 5, iaitu anak item 3, dan seterusnya, prosedur tersimpan akan mengira secara rekursif jumlah kuantiti seperti berikut:
4 * 2 * 10 * 3 = 240
Oleh itu, hasil panggilan prosedur dengan nombor = 6 akan menjadi 240.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Prosedur Tersimpan Rekursif dalam MySQL untuk Mengira Hierarki Kuantiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!