hmk run dev

PL/SQL 계층형 테이블에서 부모 카테고리 번호 구하기 본문

기타

PL/SQL 계층형 테이블에서 부모 카테고리 번호 구하기

hmk run dev 2021. 12. 9. 16:41

계층형 카테고리를 구현하기 위해 만들어놓은 column을 이용해

해당 카테고리의 가장 상위 카테고리번호를 알수 있는 PL/SQL함수를 구현해 보았다.

 

부모 카테고리 컬럼 - category_no

자식 카테고리 컬럼 - p_category_no

 

CREATE FUNCTION `f_get_category_new_parent`(idx bigint) RETURNS bigint(20)
BEGIN
        DECLARE _id bigint; // 변수 선언
        DECLARE _p_category_no bigint; // 자식 카테고리 번호
        DECLARE _category_no bigint; // 부모 카테고리 번호
        
        SET _id = idx; // 파라미터로 받은 변수 _id에 할당
        
        IF _id IS NULL THEN // null 값 예외 조건
                RETURN NULL;
        END IF;

        LOOP
                select p_category_no, category_no 
                into _p_category_no, _category_no
                from w_category_new where category_no = _id; // 인자로 받은 카테고리 테이블 선택
                
                IF _p_category_no = 0 THEN // 자식 카테고리번호 = 0 >> 최상위 부모카테고리
                SET _id := _p_category_no; // 자식카테고리가 0일때 까지 _id에 할당
                 
                RETURN _category_no; // 부모 카테고리 번호 return
                END IF;
                
                SET _id := _p_category_no; 자식카테고리가 0일때 까지 _id에 할당
        END LOOP;
END

 

디버깅 할 방법도 없고 아직 PL/SQL 문법은 너무 헷갈린다.. ㅠ

 

물론 충분히 JAVA로 구현 할 수 있지만

 

애플리케이션 서버 측에서 수행되는 것이 아니라 데이터베이스 엔진 쪽에서 수행된다는 점과

데이터와 가장 가까운 곳에 위치하고 있으므로 애플리케이션 서버로 데이터를 주고 받는 데 따르는 네트워크 트래픽이 최소화된다는 장점이 있다 그리고 속도 측면에서도 좋은 이점이 있는 것 같다!


Comments