ORA-06502: PL/SQL: 数字或值错误:character string buffer too small(DBMS_LOB.SUBSTR(CLOB) 报错:超过缓存区长度)

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值