DBMS_LOB.SUBSTR() 会将clob转为 varchar2,而varchar2是有长度限制的 为4000(存储过程里Oracle 10g最大为4000, Oracle 12 可达32767)。
当大字段超过4000时就会报错。
解决方法:
对CLOB字段进行截取然后在进行拼接,截取的长度根据存储的是汉字和数据决定长度。
--第二位表示要截取的字符串的长度
--第三位表示截取字符串的开始位置(注:等于0或1时,都是从第一位开始截取)
SELECT dbms_lob.substr('xxxxx',3000,1)||dbms_lob.substr('xxxxx',3000,3001) FROM dual;