Oracle

SPLIT 함수

damian 2011. 12. 21. 11:45

CREATE OR REPLACE TYPE TB_SPLIT AS TABLE OF VARCHAR2(32767);

CREATE OR REPLACE FUNCTION UFN_SPLIT
(
    P_LIST VARCHAR2,
    P_DEL VARCHAR2
)

    RETURN TB_SPLIT PIPELINED
IS
    L_IDX PLS_INTEGER;
    L_LIST VARCHAR2(32767) := P_LIST;
   
L_VALUE VARCHAR2(32767);
BEGIN
    LOOP
        L_IDX := INSTR(L_LIST,P_DEL);
        IF L_IDX > 0 THEN
            PIPE ROW(SUBSTR(L_LIST,1,L_IDX-1));
            L_LIST := SUBSTR(L_LIST,L_IDX+LENGTH(P_DEL));
        ELSE
            PIPE ROW(L_LIST);
            EXIT;
        END IF;
    END LOOP;
   
    RETURN;
END UFN_SPLIT;
/


SELECT ROWNUM, COLUMN_VALUE FROM TABLE(UFN_SPLIT('9,8,1,2,3,4,5,6,7',','));

'Oracle' 카테고리의 다른 글

oracle 프로시져 검색  (0) 2012.01.11
오라클 테이블 락 ( Table lock ) 확인  (0) 2012.01.10
PL/SQL  (0) 2011.12.21
SQL Plus  (0) 2011.12.21
Oracle Pipelined Table Function 의 용도  (0) 2011.12.21