오라클 SPLIT 함수를 구현하기 위해서는 우선 TYPE 을 선언해야 한다.
-->
CREATE OR REPLACE TYPE TB_SPLIT AS TABLE OF VARCHAR2(32767);
TYPE을 하나 생성 했다면 함수를 하나 생성해야 하는데
이는 아래와 같다.
------ 아래 -------
CREATE OR REPLACE FUNCTION 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 SPLIT;
/
자 그 다음은 사용법이다.
SELECT ROWNUM, COLUMN_VALUE FROM TABLE(SPLIT('9,8,1,2,3,4,5,6,7',','));
용법에 대한 설명은 예전 MS-SQL SPLIT 함수를 구현할 때 설명해 둔바 있다.
아래 링크를 참조 하자
관련 항목
MS-SQL (SPLIT)
http://mcpicdtl.blogspot.com/2008/03/ms-sql-split-by-vins.html