COPY

将LOB拷贝到另一个LOB

声明

DBMS_LOB.COPY (
  dest_lob    IN OUT NOCOPY BLOB,
  src_lob     IN            BLOB,
  amount      IN            BIGINT,
  dest_offset IN            BIGINT := 1,
  src_offset  IN            BIGINT := 1);

DBMS_LOB.COPY (
  dest_lob    IN OUT NOCOPY CLOB  ,
  src_lob     IN            CLOB  ,
  amount      IN            BIGINT,
  dest_offset IN            BIGINT := 1,
  src_offset  IN            BIGINT := 1);

结构

参数 说明
dest_lob 目的定位器实例
src_blob 源定位器实例
amount 字符数
dest_offset 目的定位器偏移量
src_offset 源定位器偏移量

示例

    
    
drop table tLob cascade;
    
Create Table tLob (
   no Number(4),
   name VarChar2(10),
   resume CLob,
   photo BLob,
   record BFile
   );
	
insert into tlob values(1,'Nick','CLOB对象列',empty_blob(),bfilename('MYDIR','1.JPG'));
   
insert into tlob values(2,'Jack','CLOB对象列',empty_blob(),bfilename('MYDIR','2.JPG'));
   
insert into tlob values(3,'Mary','对象列CLOB',empty_blob(),bfilename('MYDIR','3.JPG'));
   
create or replace procedure test_copy() as   
Declare 
    vDEST_LOB clob;
    vSRC_LOB clob;
    AMOUNT number;
    DEST_OFFSET number;
    SRC_OFFSET number;
Begin
    select resume into vDEST_LOB from tlob where no = 1 FOR UPDATE; 
    select resume into vSRC_LOB from tlob where no = 2 ;
    AMOUNT := DBMS_LOB.GetLength(vSRC_LOB);
    DEST_OFFSET := DBMS_LOB.GetLength(vDEST_LOB)+1;
    SRC_OFFSET := 1;  
    DBMS_LOB.Copy(vDEST_LOB, vSRC_LOB, AMOUNT, DEST_OFFSET, SRC_OFFSET);
    DBMS_output.put_line('拷贝结果为: '||vDEST_LOB);
End;

/
exec test_copy();   
    
   
   
/