광고 한 번씩 클릭해 주시면 글 쓰는데 큰 힘이 됩니다 (제발~)

IT/Databases

ORACLE TYPE 생성을 통한 리스트형 함수 생성

ThinkTheStory 2022. 11. 18. 20:56
728x90

CREATE OR REPLACE TYPE TYPE_ENP_MRG AS OBJECT (
    MRG_BEF_DETAIL_CMPY_ID NUMBER(10),
    MRG_DE VARCHAR2(8)
);

CREATE OR REPLACE TYPE SF_ENP_MRG_TABLE AS TABLE OF TYPE_ENP_MRG

 

create or replace FUNCTION  함수명 (V_ID IN NUMBER) 
    RETURN SF_ENP_MRG_TABLE 
IS 
    V_RSLT SF_ENP_MRG_TABLE := SF_ENP_MRG_TABLE();
    CURSOR_IDX INTEGER := 0;

        CURSOR  CURSOR_LIST1 IS 
            -- 쿼리 작성 ;

BEGIN

 

320x100

 

           FOR DATE_ENP_MRG IN CURSOR_LIST1
                LOOP
                    V_RSLT.EXTEND;
                    CURSOR_IDX := CURSOR_IDX + 1;
                    V_RSLT(CURSOR_IDX) := TYPE_ENP_MRG(
                        DATE_ENP_MRG.컬럼1, DATE_ENP_MRG.컬럼2
                    );
                END LOOP;
            RETURN V_RSLT;
END;

 

 

이렇게 만들어 놓고 호출할때는 일반 함수 호출하듯이 하면 안되고, 

 

SELECT * FROM TABLE(함수명(#인자값1#));

 

요렇게 해서 사용하면 됨.

 

고럼 요렇게 리스트형으로 값이 조회됨.

 

문제는 이렇게 했을떄 멀쩡했던 쿼리가 속도 저하가 되는 경우가 발생함.

여러가지 이유로 발생하는데, 나중에 기회되면 이 부분에 대해서도 글 작성해야겠음.

당장은 귀찮 ㅋㅋㅋ

320x100