--新建類型
CREATE OR REPLACE TYPE AA.SPLIT_TBL
as table of varchar2(32767)
--新建管道表的函數返回
CREATE OR REPLACE FUNCTION AA.SPLIT
(
P_LIST VARCHAR2,
P_DEL VARCHAR2 := ','
) RETURN SPLIT_TBL 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 > 0THEN
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;