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;