Prosedur Tersimpan Rekursif untuk Hierarki Kuantiti Pengkomputeran
Dalam situasi seperti yang dibentangkan, di mana pengiraan hierarki diperlukan, prosedur tersimpan rekursif dalam MySQL boleh memberikan penyelesaian yang cekap.
Untuk jadual yang diberikan, di mana lajur kuantiti mewakili kuantiti item dan lajur parent_id menunjukkan item induknya, prosedur tersimpan boleh dibuat untuk mengira secara rekursif jumlah kuantiti untuk sesuatu item yang diberikan, dengan mengambil kira semua nenek moyangnya dalam hierarki.
Pengisytiharan Prosedur Tersimpan
Takrifan prosedur tersimpan MySQL berikut membenarkan panggilan rekursif dan mengira jumlah kuantiti:
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 ;
Dalam prosedur tersimpan ini, parameter nombor mewakili ID item yang mana jumlah kuantiti akan dikira dan jumlah parameter output memegang hasil yang dikira.
Memanggil Prosedur Tersimpan
Untuk menggunakan prosedur tersimpan, adalah penting untuk menetapkan pembolehubah sesi berikut untuk kedalaman rekursi:
SET @@GLOBAL.max_sp_recursion_depth = 255; SET @@session.max_sp_recursion_depth = 255;
Selepas menetapkan pembolehubah ini, prosedur tersimpan boleh dipanggil menggunakan pernyataan berikut:
CALL calctotal(6, @total); SELECT @total;
Atas ialah kandungan terperinci Bagaimanakah Prosedur Tersimpan Rekursif dalam MySQL Mengira Hierarki Kuantiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!