Reading clob line by line with pl\sql

后端 未结 9 935
长情又很酷
长情又很酷 2020-12-02 00:53

In my project i use oracle as primary database and i\'ve faced a problem with parsing clob. So suppose we have a clob with value

   aaaaaa
   cccccc
   bbbbb         


        
9条回答
  •  执笔经年
    2020-12-02 01:41

        declare
        c_clob clob := empty_clob();
        c_offset number;
        c_len number;
        read_cnt number;
        prev_buf number := 0;
        read_str varchar2(32000);
        BEGIN
       -- Read the clob in to the local variable
            select c into c_clob from test;
            c_offset := 1;
       -- Get the length of the clob
            c_len := dbms_lob.getlength(c_clob);
       -- Read till the current offset is less the length of clob
        while(c_offset <= c_len)
            loop
       -- Get the index of the next new line character
               read_cnt := instr(c_clob, CHR(10), c_offset, 1);
               exit when read_cnt = 0;
       -- Read the clob in the index
               read_str := dbms_lob.substr(c_clob, read_cnt-c_offset, c_offset);                                          
               dbms_output.put_line('Line#' || read_str);
       -- Now the current offset should point after the read line
               c_offset := read_cnt+1;
               end loop;
            END;
        /
    

提交回复
热议问题