加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle clob字符串分割函数

发布时间:2020-12-12 13:43:22 所属栏目:百科 来源:网络整理
导读:/* ***************************************************** ORACLE clob字符串分割函数 ? ? ?首先创建以下type ? ? ?create or replace type type_str is table of varchar2(1000); ****************************************************** */ FUNCTION FU
/******************************************************
     ORACLE clob字符串分割函数 

? ? ?首先创建以下type

? ? ?create or replace type type_str is table of varchar2(1000);

  *******************************************************/
  FUNCTION FUNC_SPLIT_CLOB(P_STR IN CLOB,P_DELIMITER IN VARCHAR2 DEFAULT ,/*,LEN IN OUT NUMBER*/) RETURN TYPE_STR
  AS
    RS TYPE_STR := TYPE_STR();
    L_STR CLOB := P_STR;
    L_DELIMITER CLOB:= TO_CLOB(P_DELIMITER);
    L_LEN NUMBER := 0;
    N     NUMBER;
    V_STR VARCHAR2(32767);
    LEN NUMBER;

  BEGIN 
    
     L_LEN := LENGTH(P_DELIMITER);
  
     DBMS_LOB.APPEND(DEST_LOB => L_STR,SRC_LOB =>L_DELIMITER);
     
     LOOP
          N := DBMS_LOB.INSTR(LOB_LOC => L_STR,PATTERN => L_DELIMITER);
          V_STR:= TRIM(DBMS_LOB.SUBSTR(LOB_LOC => L_STR,AMOUNT => N-1,OFFSET => 1));
          
      EXIT WHEN V_STR IS NULL;
          RS.EXTEND;
          RS(RS.COUNT) :=  V_STR ;
          LEN := LENGTH(RS(RS.COUNT))+DBMS_LOB.GETLENGTH(L_DELIMITER)+LEN;
          DBMS_LOB.ERASE(LOB_LOC => L_STR,AMOUNT => LEN);
     END LOOP;
     RETURN RS;

  END FUNC_SPLIT_CLOB;

SQL> declare
2 lens number default 0;
3?RS TYPE_STR := TYPE_STR();
4 l_string clob:=to_clob(‘A,AA,AAA,AAAAAB,BB,BBB,BBBB‘);
5 begin
6 rs:= func_split_clob(p_string => l_string,len => lens);
7 for i in rs.first .. rs.last loop
8 dbms_output.put_line(rs(i));
9 end loop;
10 end;
11 /

 
 

AAAAAAAAAAABBBBBBBBBB

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读