주어진 항목의 계산 수량을 결정하기 위해 MySQL에서 재귀 저장 프로시저를 생성하려면 테이블 구조와 재귀 논리를 이해해야 합니다.
문제 배경
'id', 'parent_id' 및 '수량' 열이 있는 테이블이 주어지면 목표는 항목의 총 수량을 다음과 같이 계산하는 것입니다. 부모-자식 관계를 재귀적으로 순회합니다. 예를 들어 항목 6의 계산된 수량은 240입니다. 상위 항목이 5(수량 4), 3(수량 2), 2(수량 10)이기 때문입니다.
해결책: 재귀 저장 프로시저
<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>
프로시저 호출
저장 프로시저를 호출하고 항목 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>
프로시저 분석
위 내용은 MySQL에서 계산된 수량을 계산하기 위해 재귀 저장 프로시저를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!