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

clob 分行 读取
------解决方案--------------------
参考: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;