其工作仅在mysql版本> = 5中
存储过程声明是这个,
您可以给它一点点改善,但是可以这样工作:
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 ;
调用就像(设置此变量很重要):
SET @@GLOBAL.max_sp_recursion_depth = 255;SET @@session.max_sp_recursion_depth = 255;CALL calctotal(6, @total);SELECT @total;



