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

DDD
풀어 주다: 2024-10-31 22:22:28
원래의
231명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!