>  기사  >  데이터 베이스  >  使用dbms_lob.compare比对lob字段

使用dbms_lob.compare比对lob字段

WBOY
WBOY원래의
2016-06-07 16:01:221831검색

以前写了一个通过dbms_lob.getlength来比对lob长度的脚本,后来通过实践发现有点问题,发现很多长度一样的lob但是内容可能不一样,oracle目前只有使用dbms_lob.compare来比对lob字段,但是这个有个局限就是不能使用dblink来比对两个库的lob,下面是一个举例

以前写了一个通过dbms_lob.getlength来比对lob长度的脚本,后来通过实践发现有点问题,发现很多长度一样的lob但是内容可能不一样,oracle目前只有使用dbms_lob.compare来比对lob字段,但是这个有个局限就是不能使用dblink来比对两个库的lob,下面是一个举例脚本,通过两张表tb1和tb2通过主键id来进行lob的比对

如果发现lob不一致,则打印出id号

. /home/oracle/.bash_profile

sqlplus -silent test/test <<EOF
set serveroutput on
set pagesize 0 feedback off verify off heading off echo off

Declare
CURSOR c1 is select id from test.tb1;
varC1 blob;
varC2 blob;
ln number(4);
Begin
for v1 in c1 loop
select data into varC1 from test.tb1 where id = v1.id;
select data into varC2 from test.tb2 where id = v1.id; 
ln := DBMS_LOB.Compare(varC1,varC2);
if ln <>0 then
DBMS_output.put_line(v1.id);
end if;
end loop;
End;
/
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.