Oracle Error - ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion

Error - ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion 


More Explain:

SYS.AUD$.SQLTEXT which is a CLOB contains max length of 15573 which is way too much to read it in a varchar2. Now, we need to pass data from AUD$ to internal audit and we are encountering a hurdle whenever we are hitting the maximum length a varchar2 can fit in. We need to extract the contents of the CLOB column sqltext as in in whole and pass to internal audit. That is in a nut shell, we need to get data as is out of the sys.aud$ including the whole sqltext column.

varchar2最大字节4000;

解决办法 将CLOB 转换 VARCHAR2 按4000为一组 进行截取
with data as 
 ( select sql_fulltext, dbms_lob.getlength(sql_fulltext) len from v$sql )
select
  dbms_lob.substr(sql_fulltext,4000,1) piece1,
  case when len > 4000 then dbms_lob.substr(sql_fulltext,4000,4001) end piece2,
  case when len > 8000 then dbms_lob.substr(sql_fulltext,4000,8001) end piece3,
  case when len > 12000 then dbms_lob.substr(sql_fulltext,4000,12001) end piece4,
  case when len > 16000 then dbms_lob.substr(sql_fulltext,4000,165001) end piece5
from data

-- 刘轶鹤

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值