Declare
l_Clob Clob;
L1 Varchar2(32767);
Begin
For i In 1 .. 20000 Loop
l_Clob := l_Clob || '哈哈';
End Loop;
Dbms_Output.Put_Line(Dbms_Lob.Getlength(l_Clob));
L1 := Dbms_Lob.Substr(l_Clob, 9000, 1);
Dbms_Output.Put_Line(Lengthb(L1));
End;这样我得到的L1是24573,我用的UTF8,一个汉字3个字节。肯定是赋了8191个,这个是什么问题?请兄弟们帮看下,另我的数据库是默认配置,db_cache_size为0,db_block_size = 8192,谢谢
l_Clob Clob;
L1 Varchar2(32767);
Begin
For i In 1 .. 20000 Loop
l_Clob := l_Clob || '哈哈';
End Loop;
Dbms_Output.Put_Line(Dbms_Lob.Getlength(l_Clob));
L1 := Dbms_Lob.Substr(l_Clob, 9000, 1);
Dbms_Output.Put_Line(Lengthb(L1));
End;这样我得到的L1是24573,我用的UTF8,一个汉字3个字节。肯定是赋了8191个,这个是什么问题?请兄弟们帮看下,另我的数据库是默认配置,db_cache_size为0,db_block_size = 8192,谢谢
40000
18000
和预想的一样我的字符集编码select lengthb('汉') from dual;得到的是一个汉字2个字节
你google dbms_lob.substr 8191就出来了
倒,怎么我的9I确没有这个BUG?
呵呵,,和版本关系很大啊,看来....我的就的慢很多,要121秒
Dbms_Output.Put_Line(Lengthb(l_Var)); 得到30000,正常了Declare
l_Clob Clob;
l_Var Varchar2(32767);
Begin
For i In 1 .. 20000 Loop
l_Clob := l_Clob || '哈哈';
End Loop;
l_Var := Dbms_Lob.Substr(l_Clob, 10000, 1);
Dbms_Output.Put_Line(Lengthb(l_Var));
Dbms_Output.Put_Line(Dbms_Lob.Getlength(l_Clob));
End;