首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.sql.SQLException: ORA-22835:缓冲区太小,无法进行从CLOB到CHAR或BLOB到RAW的转换

java.sql.SQLException: ORA-22835:缓冲区太小,无法进行从CLOB到CHAR或BLOB到RAW的转换
EN

Stack Overflow用户
提问于 2020-02-20 21:42:31
回答 1查看 567关注 0票数 0

我使用TypedQuery<NewsContentBaseInfo>构建并执行了一个动态查询,其中一个字段是CLOB object - news.stores。这是我得到的错误,我找不到如何解决这个问题的信息:

java.sql.SQLException: ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion

下面是查询:

代码语言:javascript
运行
复制
SELECT DISTINCT new com.kaufland.newsletter.usecase.newscontent.search.dto.response.NewsContentBaseInfo(news.id, news.uuid, news.dayAndTimeOfPublish, news.title, news.subtitle, news.categoryCountry, news.newsPeriod, to_char(news.stores)) 
FROM com.kaufland.newsletter.domain.content.AbstractNewsContent news 
LEFT OUTER JOIN news.newsLinks newsLinks 
WHERE news.country = :country AND news.status = :status 
AND news.dayAndTimeOfPublish >= :dayAndTimeOfPublishStart 
AND news.dayAndTimeOfPublish <= :dayAndTimeOfPublishEnd 
AND (news.stores LIKE '%'||:storeNumber0||'%') 
AND news.categoryCountry.id in :includeCategoryIds 
AND (LOWER(news.title) LIKE LOWER('%'||:searchText||'%') 
    OR LOWER(news.subtitle) LIKE LOWER('%'||:searchText||'%') 
    OR LOWER(news.text1) LIKE LOWER('%'||:searchTextEscaped||'%') 
    OR LOWER(news.text2) LIKE LOWER('%'||:searchTextEscaped||'%') 
    OR LOWER(news.text3) LIKE LOWER('%'||:searchTextEscaped||'%') 
    OR LOWER(newsLinks.displayText) LIKE LOWER('%'||:searchText||'%')) 
ORDER BY news.dayAndTimeOfPublish DESC
EN

回答 1

Stack Overflow用户

发布于 2020-02-20 22:15:11

to_char函数返回限制为4000个字符的可变字符。如果CLOB大于该值,则会出现此错误(取决于Oracle版本)。

如果确实需要字符串值,可以尝试使用dbms_lob包(https://docs.oracle.com/database/121/ARPLS/d_lob.htm#ARPLS600),它可以处理更多字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60321341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档