加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

OracleError-ORA-22835:BuffertoosmallforCLOBtoCHARorBLOBtoRAWconversion

(2024-06-14 14:04:39)
标签:

ora-22835

buffertoosmall

分类: 技术类
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





-- 刘轶鹤

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有