欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

clob中怎么分行读取

更新时间: 2014-01-05 02:14:38 责任编辑: Author_N1

 

Clob中如何分行读取
一个CLOB字段的表中,存入了一个包含5行的txt文件,我想读取该文件的第3行,何解?

--参考方法--
参考:http://hehe198504.iteye.com/blog/852883
--参考方法--
闲来无事,写了一个,不知道是不是能达到你的要求:

create table t_clob (id number,str clob);
insert into t_clob values(1,'aaa'
--参考方法--
chr(10)
--参考方法--
'bbb'
--参考方法--
chr(10)
--参考方法--
'ccc');
insert into t_clob values(2,'111'
--参考方法--
chr(10)
--参考方法--
'222'
--参考方法--
chr(10)
--参考方法--
'333'
--参考方法--
chr(10)
--参考方法--
'444');
/
declare
  v_amount BINARY_INTEGER := 4000;
  v_offset INTEGER := 1;
  v_buffer varchar2(4000);
BEGIN
  for j in (select id, str
              from (select id,
                           regexp_substr(str,
                                         '[^' 
--参考方法--
 chr(10) 
--参考方法--
 ']+',
                                         1,
                                         level) str,
                           level lv
                      from t_clob t
                    CONNECT BY id = PRIOR id
                           AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
                           AND LEVEL <= regexp_count(str, chr(10)) + 1)
             where lv = 3) loop
    IF dbms_lob.getlength(j.str) <= 4000 THEN
      dbms_lob.READ(j.str, v_amount, v_offset, v_buffer);
      dbms_output.put_line(j.id 
--参考方法--
 ':' 
--参考方法--
 v_buffer);
    ELSE
      dbms_output.put_line('文件的第三行长度超过了4000');
    END IF;
  end loop;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    dbms_output.put_line(sqlerrm);
END;

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:38
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7454/
本文WWW.DOC100.NET DOC100.NET版权所有。