Perisitent Lobs

AmKad
Дата: 26.03.2011 18:42:01
Кто-нибудь может показать, где описано такое поведение в доке?
+ Version
select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

+ Experiment
drop table t_lob purge;

Таблица удалена.


create table t_lob(f1 clob);

Таблица создана.

insert into t_lob(f1) values(null);

1 строка создана.


declare
l_clob1  clob;
l_clob2  clob;
l_string varchar2(20):= '[Hello World]';
begin
    update t_lob set f1 = empty_clob() returning f1 into l_clob1;

    l_clob2 := l_clob1;

    dbms_output.put_line('1 = ' || dbms_lob.istemporary(l_clob1));
    dbms_output.put_line('2 = ' || dbms_lob.istemporary(l_clob2));

    dbms_lob.writeappend(l_clob1, length(l_string), l_string);
    dbms_lob.writeappend(l_clob2, length(l_string), l_string);
    dbms_lob.writeappend(l_clob1, length(l_string), l_string);
    dbms_lob.writeappend(l_clob2, length(l_string), l_string);


    dbms_output.put_line('1 = ' || l_clob1);
    dbms_output.put_line('2 = ' || l_clob2);
end;
/
1 = 0
2 = 0
1 = [Hello World][Hello World][Hello World]
2 = [Hello World][Hello World][Hello World][Hello World]

Процедура PL/SQL успешно завершена.


select dbms_lob.substr(f1, 60) from t_lob;

DBMS_LOB.SUBSTR(F1,60)
------------------------------------------------------------------
[Hello World][Hello World][Hello World][Hello World]

Почему нет равенства в первых двух выделенных строках?
_Nikotin
Дата: 26.03.2011 19:17:05
это моя первая задача для plsqlchallenge, которая так и не была использована.
Сейчас найду ссылку на документацию :)
_Nikotin
Дата: 26.03.2011 19:23:37
AmKad
Дата: 26.03.2011 19:25:47
_Nikotin,

Спасибо, почитаем.
AmKad
Дата: 26.03.2011 22:45:50
Помимо всего прочего
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/adlob_design.htm#i1006671
Avoid updating the same LOB with different locators.