过程中 有个变量 V_GZ clob;
dbms_lob.getlength(V_GZ)=4000
我想 把他存到varchar2变量 v_gz_new里面
我用 这个
v_gz_new :=dbms_lob.substr(V_GZ,4000,1);
就会报错string buffer too small
截取2000的时候不报错
然后我又想分开拼接
v_gz_new1 :=dbms_lob.substr(V_GZ,2000,1);
v_gz_new2 :=dbms_lob.substr(V_GZ,2000,2000);
v_gz_new :=v_gz_new1||v_gz_new2;结果拼接的这句又报错了
请问各位大神,这个怎么解决呢?
------解决方案--------------------
CLOB存放的是字符集,varchar2存放的是字节,一个字符可以包含多个字节,从你的描述中可以看出你的环境是一个字符包含2个字节,而varchar2的最大长度是4000个字节,所以你只能取v_gz_new1 :=dbms_lob.substr(V_GZ,2000,1);