compare()方法
compare(lob1,lob2,amount,offset_1,offset_2)
1用于比较2个lob存储的数据,比较的方式是从指定偏移量开始,对指定数量的字符或者字节进行比较。
2如果比较内容相同,返回0,否则返回-1或1.
3如果参数设置有误或不合理,返回null
4改方法的使用语法如下
语法1(BLOB/BFILE)
dbms_lob.compare(
lob_1 IN BLOB/BFILE,
lob_2 IN BLOB/BFILE,
amount IN INTEGER:=4294967295,–要比较的字节数(BLOB)
offset_1 IN INTEGER:=1,–lob_1的起始位置
offset_2 IN INTEGER:=1–lob_2的起始位置)
语法1(CLOB/nclob )
dbms_lob.compare(
lob_1 IN CLOB/nclob character set any_cs,
lob_2 INCLOB/nclob character set lob_1%charset ,
amount IN INTEGER:=4294967295,–要比较的字节数(BLOB)
offset_1 IN INTEGER:=1,–lob_1的起始位置
offset_2 IN INTEGER:=1–lob_2的起始位置)
参数解释:
offset_1:lob_1的起始位置
offset_2:lob_2的起始位置
amount IN INTEGER:要比较的字符数(CLOB)或者字节数(BLOB)
character set any_cs:lob_1 中的数据可以是任何字符集
character set dest_lob%charset:表示lob_1的字符集.
举例
测试数据
create table clob_table(
id number,
clob_column clob not null
);--添加数据
--to_clob 将字符数据转换为clob类型
insert into clob_table values(1,to_clob('this is clob data'));
insert into clob_table values(2,to_clob('clob is here'));
select * from clob_table;
使用compare方法
create or replace procedure compare_clob
assrc_lob clob; dest_lob clob; amount INTEGER:=5;offset_1 INTEGER:=1;offset_2 INTEGER:=1;return_value INTEGER;begin select clob_column into dest_lob from clob_table where id=1 for update;select clob_column into src_lob from clob_table where id=2 for update;return_value:=dbms_lob.compare(dest_lob,src_lob,amount,offset_1,offset_2); dbms_output.put_line('比较结果是'||return_value);
end compare_clob;
/
exec compare_clob;