COMPARE

比较两个LOB大小

声明

DBMS_LOB.COMPARE (
  lob_1            IN BLOB,
  lob_2            IN BLOB,
  amount           IN BIGINT := DBMS_LOB.LOBMAXSIZE,
  offset_1         IN BIGINT := 1,
  offset_2         IN BIGINT := 1)
RETURN INTEGER;

DBMS_LOB.COMPARE (
  lob_1            IN CLOB  ,
  lob_2            IN CLOB  ,
  amount           IN BIGINT := DBMS_LOB.LOBMAXSIZE,
  offset_1         IN BIGINT := 1,
  offset_2         IN BIGINT := 1)
RETURN INTEGER;

DBMS_LOB.COMPARE (
  lob_1            IN BFILE,
  lob_2            IN BFILE,
  amount           IN INTEGER,
  offset_1         IN INTEGER := 1,
  offset_2         IN INTEGER := 1)
RETURN INTEGER;

结构

参数 说明
lob_1 定位器
lob_2 定位器
amount 字节数或字符比较
offset_1 lob_1偏移量
offset_2 lob_2偏移量

示例

    
    
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_compare() as   
Declare 
    varC1 clob;
    varC2 clob;
    varC3 clob;
    ln number(4);
Begin
    select resume into varC1 from tlob where no = 1;
    select resume into varC2 from tlob where no = 2;
    select resume into varC3 from tlob where no = 3;
    ln := DBMS_LOB.Compare(varC1,varC1);
    DBMS_output.put_line('比较的结果为: '||ln);
    ln := DBMS_LOB.Compare(varC2,varC3);
    DBMS_output.put_line('比较的结果为: '||ln);
End;

/
exec test_compare();    
比较的结果为: 0
比较的结果为: -1
   
/

相同返回结果为0 不同返回结果为 -1 如果offset不是一个有效的偏移量返回结果为null