Oracle clob 操作


--Oracle clob 操作
-- Created on 2015/4/8 by TianPing
declare 
  -- Local variables here
  v_clob1 Clob;
  v_clob2 Clob;
  v_amount Int;  --長度
  v_offset Int; --偏移量
  
  str varchar2(100);
Begin   
       
 --初始或清空clob變量
      dbms_lob.createtemporary(v_clob1,True);   
      dbms_lob.createtemporary(v_clob2,True);

 --向clob變量寫入字符
      dbms_lob.write(v_clob1,30,1,'123456789012345678901234567890');
      dbms_output.put_line(v_clob1);

 --初始或清空clob字段
      Update test_lob Set clob_test=empty_clob() Where lob_id=1;      

      --寫入clob字段。要先取得clob定位器並鎖定記錄,緩沖區最大長度32767,超 過要多次寫入
       Select clob_test Into v_clob2  From test_lob Where lob_id=1;

     -- Update test_lob Set clob_test=v_clob1 Where lob_id=1;
     dbms_lob.write(v_clob2,26,1,'abcdefghijklmnopkrstuvwxyz');

      --取clob字段定位器
      Select clob_test Into v_clob1  From test_lob Where lob_id=1 ;
      dbms_output.put_line(v_clob1);

      --向clob變量寫入字符串
         v_amount:=26;  --寫入長度
        v_offset:=21;    --開始寫入位置
      dbms_lob.write(v_clob1,v_amount,v_offset,'abcdefghijklmnopkrstuvwxyz');
      dbms_output.put_line(v_clob1);

      --擦除clob變量部份字符串,擦掉部份用空格代替
         v_amount:=5;  --擦除長度
        v_offset:=31;    --開始擦除位置
      dbms_lob.erase(v_clob1,v_amount,v_offset);
      dbms_output.put_line(v_clob1);

      --截取clob前面部份字符串
         v_amount:=20;  --截取長度
      dbms_lob.trim(v_clob1,v_amount);
      dbms_output.put_line(v_clob1);      

            --截取clob部份字符串,注意substr是一個函數而不是一個存儲過程,不修改clob變量的值
         v_amount:=11;  --截取長度
        v_offset:=3;    --開始截位置
      dbms_output.put_line(dbms_lob.substr(v_clob1,v_amount,v_offset));
        dbms_output.put_line(v_clob1);      

            --查找clob中字符串'89'從第11個字符開始第1次出現的位置
      dbms_output.put_line(dbms_lob.instr(v_clob1,'89',11,1));

             --查找clob中字符串'89'從第5個字符開始第2次出現的位置,如不出現返回0
      dbms_output.put_line(dbms_lob.instr(v_clob1,'89',11,2));  

     
 --取clob對象長度
      dbms_output.put_line(dbms_lob.getlength(v_clob1));  
          
  
--把緩沖區字串添加到clob對象尾部,緩沖區最大長度32767,超 過要多次寫入
      str:='abcdefghijklmnopqrstuvwxyz';
      dbms_lob.append(v_clob1,str);      
        dbms_output.put_line(v_clob1);    
      
    
  --截取緩沖區前5個字符添加到clob對象尾部
      str:='1234567890';
      dbms_lob.writeappend(v_clob1,5,str);      
        dbms_output.put_line(v_clob1);    
      
     
 --讀部份字串到緩沖區
          v_amount:=26;  --讀取長度
        v_offset:=21;    --開始讀取位置
      dbms_lob.read(v_clob1,v_amount,v_offset,str);
      dbms_output.put_line(str); 

end;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM