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;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐