【轉】Oracle將以特定分隔的字符串轉成表格的方法(用於類似遊標的遍歷)

    CREATE OR REPLACE TYPE TY_OBJECT AS OBJECT(COL_NAME VARCHAR2(200));
    /
    CREATE OR REPLACE TYPE TY_TABLE AS TABLE OF TY_OBJECT;
    /
    CREATE OR REPLACE FUNCTION STR2TABLE(V_STR       IN VARCHAR2,V_DELIMITER IN VARCHAR2)
    --此函數的目的是將以特定字符分隔的字符串轉換爲遊標形式,以例遍歷此遊標
     RETURN TY_TABLE AS
      V_TY_TABLE TY_TABLE;
    BEGIN
      SELECT TY_OBJECT(REGEXP_SUBSTR(V_STR,'[^' || V_DELIMITER || ']+',1,LEVEL,'i'))
        BULK COLLECT
        INTO V_TY_TABLE
        FROM DUAL
      CONNECT BY LEVEL <=
                 LENGTH(V_STR) -
                 LENGTH(REGEXP_REPLACE(V_STR,'' || V_DELIMITER || '','')) + 1;
      RETURN V_TY_TABLE;
    END;
    /
    --應用示例
    SELECT * FROM TABLE(STR2TABLE('1,2,3',','));
    /

 轉:https://www.jb51.cc/oracle/212857.html

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