• 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;
    

      

  • 相关阅读:
    (转)[数据库基础]——编码标准之命名
    学习进度-06
    学习进度-05
    学习进度-04 Scala的学习
    学习进度-03
    学习进度-02
    学习进度-01
    《用例分析技术》读后感-01
    《掌握需求过程》阅读笔记-02
    《掌握需求过程》读后感-01
  • 原文地址:https://www.cnblogs.com/myjoan/p/9449276.html
Copyright © 2020-2023  润新知