>  기사  >  데이터 베이스  >  MySQL의 재귀 저장 프로시저가 수량 계층 구조를 어떻게 계산할 수 있습니까?

MySQL의 재귀 저장 프로시저가 수량 계층 구조를 어떻게 계산할 수 있습니까?

DDD
DDD원래의
2024-10-31 22:22:28236검색

How Can a Recursive Stored Procedure in MySQL Calculate Quantity Hierarchy?

수량 계층 계산을 위한 재귀 저장 프로시저

제시된 것과 같이 계층적 계산이 필요한 상황에서는 MySQL의 재귀 저장 프로시저가 필요합니다. 효율적인 솔루션을 제공할 수 있습니다.

수량 열이 항목의 수량을 나타내고 parent_id 열이 상위 항목을 나타내는 특정 테이블에 대해 저장 프로시저를 작성하여 항목의 총 수량을 재귀적으로 계산할 수 있습니다. 계층 구조의 모든 상위 항목을 고려하여 해당 항목을 고려합니다.

저장 프로시저 선언

다음 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 ;

이 저장 프로시저에서 number 매개변수는 총 수량을 계산할 항목의 ID를 나타내며 총 출력 매개변수는 계산된 결과를 보유합니다.

저장 프로시저 호출

저장 프로시저를 활용하려면 재귀 깊이에 대해 다음 세션 변수를 설정하는 것이 중요합니다.

SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255;

이러한 변수를 설정한 후 저장 프로시저를 다음 명령문을 사용하여 호출됩니다.

CALL calctotal(6, @total);
SELECT @total;

위 내용은 MySQL의 재귀 저장 프로시저가 수량 계층 구조를 어떻게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.