ORACLE 管道表的使用

--新建類型
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;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章