ORA-64203: 目标缓冲区太小, 无法容纳字符集转换之后的 CLOB 数据。

报错原因:在网上查询了一下,应该是由于content字段是clob字段,字符长度超过了char类型的缓冲区最大限制,所以才报错的。

 

解决方法:通过dbms_lob.substr 函数取出子串,然后通过 || 拼接起来,比如:

 

select DBMS_LOB.SUBSTR(content,4000,1) || 
       DBMS_LOB.SUBSTR(content,4000,4001) || 
       DBMS_LOB.SUBSTR(content,4000,8001) || 
       DBMS_LOB.SUBSTR(content,4000,12001) 
from xxx;

 

 

第二种使用 xmlagg拼接

xmlagg(xmlparse(content  内容  || ',' wellformed)  order by 字段).getclobval();

 

如果对字符长度有限制则可以截取

substr(xmlagg(xmlparse(content  内容  || ',' wellformed)  order by 字段).getclobval(), 0, 1024);

 

你可能感兴趣的:(程序人生)