zoukankan      html  css  js  c++  java
  • Oracle 超长字符串分割劈分

    Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大....

    下面,,,,直奔主题了:

    CREATE OR REPLACE FUNCTION splitstr(p_string IN clob, p_delimiter IN VARCHAR2:=',')
    RETURN str_split PIPELINED
    /*劈分字符串,返回结果集
     使用 select COLUMN_VALUE from table(splitstr('34324,65,gfds,yt,,')); --默认分隔符
     使用 select COLUMN_VALUE from table(splitstr('34324,65,gfds,yt,,',','));
     使用遍历 for tbl in (select * from table(splitstr('123,567,9'))) loop ... end loop;
    */
    AS
      v_length NUMBER := LENGTH(p_string);
      v_start  NUMBER := 1;
      v_index  NUMBER;
      v_chars varchar(4000);--限制每行长度,方便使用
    BEGIN
      WHILE(v_start <= v_length) LOOP
        v_index := INSTR(p_string, p_delimiter, v_start);
        IF v_index = 0 THEN
          v_chars:=substr(SUBSTR(p_string, v_start),1,4000);
          PIPE ROW(v_chars);
          v_start := v_length + 1;
        ELSE
          v_chars:=substr(SUBSTR(p_string, v_start, v_index - v_start),1,4000);
          PIPE ROW(v_chars);
          v_start := v_index + 1;
        END IF;
      END LOOP;
      RETURN;
    END splitstr;
    

      返回的table 列有限制长度的,为varchar2长度限制, 方便其他操作

    还有这个要定义的: CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2(32676);

    在存储过程调用时,如果是参数/变量传入,不能是long类型的,否则报错,因为long类型.....就不多说了

    转载记得原文链接:http://cnblogs.cn/lzpong

  • 相关阅读:
    多重继承
    单继承
    访问限制方法
    猜字游戏
    getSet方法
    访问限制
    __str__函数
    析构函数
    构造函数二
    选择排序
  • 原文地址:https://www.cnblogs.com/lzpong/p/5086173.html
Copyright © 2011-2022 走看看