develog

[Oracle] Function return table 본문

DB/Oracle

[Oracle] Function return table

냐옴 2017. 3. 27. 13:52

1. 생성

 -- 1. OBJECT 타입 생성

CREATE OR REPLACE
TYPE T_OBJ AS OBJECT
(
 COL1 VARCHAR2(10)
, COL2 VARCHAR2(10)
);

-- 2. TABLE 타입 생성

CREATE OR REPLACE
TYPE T_TABLE AS TABLE OF T_OBJ;

 -- 3. 함수 생성 (테이블 리턴)

CREATE OR REPLACE
FUNCTION TFN_LIST(P_COL1 VARCHAR2)
RETURN T_TABLE
IS
    V_RTN T_TABLE;
BEGIN
    SELECT T_OBJ(COL1, COL2)
    BULK COLLECT INTO V_RTN
    FROM
    (
        SELECT COL1, COL2
        FROM MY_TABLE
        WHERE COL1 = P_COL1
    );
    RETURN V_RTN;
END TFN_LIST;


2. 실행

DECLARE

BEGIN

    FOR I IN
    (
        SELECT *
        FROM TABLE(TFN_LIST('AA'))
    )
    LOOP
        DBMS_OUTPUT.PUT_LINE(I.COL1 || ',  ' || I.COL2);
    END LOOP;

END;


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

[Oracle] total_sec 을 hh:mm:ss 로 변환  (0) 2017.04.04
[Oracle] timestamp to date  (0) 2017.04.03
[Oracle] 참조 찾기  (0) 2017.03.27
[Oracle] TIMESTAMP, INTERVAL  (0) 2016.12.01
[Oracle] package member 조회  (0) 2016.11.03
Comments