Programming/Oracle2016. 4. 28. 01:06


Oracle Table Function을 이용해서

함수 결과값을 Table형식으로 리턴해서 사용할 수 있다.


Table Function을 Table처럼 사용이 가능하다.(Oracle 9i 이상에서 가능)

ex) Select * From Table(Function)



----------------------------------------------------------------------------------------------

1. Type 생성


CREATE OR REPLACE TYPE "ORG_ROW_TYPE" is object (

    ORG_ID  NUMBER

)


----------------------------------------------------------------------------------------------

2. Type을 Table형태로 생성


CREATE OR REPLACE TYPE "ORG_TAB_TYPE" is table of ORG_ROW_TYPE


----------------------------------------------------------------------------------------------

3. Table Function 생성


CREATE OR REPLACE FUNCTION F_ORG_TAB (

     an_org_id  IN  NUMBER

) RETURN ORG_TAB_TYPE PIPELINED IS  -- PIPELINED형식으로 결과값을 리턴


    ret_val     ORG_ROW_TYPE;  -- ORG_ROW_TYPE 형식의 변수선언

    n_org_id  NUMBER := NULL;


BEGIN


    FOR ss IN (

        SELECT ORG_ID

          FROM (SELECT 111 AS ORG_ID FROM DUAL UNION ALL

                    SELECT 222 AS ORG_ID FROM DUAL UNION ALL

                    SELECT 333 AS ORG_ID FROM DUAL UNION ALL

                    SELECT 444 AS ORG_ID FROM DUAL                  )

    )

    LOOP


        ret_val := ORG_ROW_TYPE(ss.org_id);

        PIPE ROW(ret_val);  --  PIPE ROW()함수를 이용해서 결과값을 만듬


    END LOOP;


    RETURN;


END;


----------------------------------------------------------------------------------------------

4. Select 쿼리로 조회


SELECT ORG_ID

  FROM TABLE(F_ORG_TAB(12345))


----------------------------------------------------------------------------------------------

5.결과

111

222

333

444



'Programming > Oracle' 카테고리의 다른 글

오라클 분석함수  (0) 2016.05.12
오라클 with  (0) 2016.05.10
오라클 PIVOT UNPIVOT  (0) 2015.12.09
오라클 월별누적합계 구하기  (0) 2015.12.01
오라클 substr  (0) 2015.11.27
Posted by jvvj