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 |