DB/Oracle

split

냐옴 2012. 12. 11. 15:50

FUNCTION FN_SPLIT(P_STR VARCHAR2)

RETURN T_LIST

IS

    V_LIST      T_LIST;

    V_PREV      VARCHAR2(1024);

    V_NEXT      VARCHAR2(1024);

    V_POS       NUMBER;

BEGIN

    V_NEXT := P_STR;

    V_LIST := T_LIST();


    LOOP

        V_POS := INSTR(V_NEXT, ',');


        IF V_POS = 0

        THEN

            V_LIST.EXTEND;

            V_LIST(V_LIST.COUNT) := V_NEXT;

            EXIT;

        END IF;


        V_PREV := SUBSTR(V_NEXT, 0, V_POS - 1);

        V_NEXT := SUBSTR(V_NEXT, V_POS + 1);


        V_LIST.EXTEND;

        V_LIST(V_LIST.COUNT) := V_PREV;

    END LOOP;


    RETURN V_LIST;

EXCEPTION

WHEN OTHERS

THEN

    RETURN T_LIST();

END FN_SPLIT;

댓글수0