oracle中wm_concat 字符串缓冲区太小解决方案

转载自:https://blog.csdn.net/zym1550974736/article/details/69400400    感谢,特此记录


今天在项目中执行sql时遇到一个问题,执行

select wmsys.wm_concat(p_codes) codes from t_rel where id='123'
  • 1

这样一个语句时报这样的错误:

numeric or value error: character string buffer too small(数字或值错误:字符缓冲区太小)

经查明,wm_concat函数拼接的字符串不能超过4000字节,否则会报错。


  • 解决方案:

    更改sql如下:

select XMLAGG(XMLELEMENT(E, p_codes || ',')).EXTRACT('//text()').getclobval() codes from t_rel where vote_id='123'
  • 1

注意,该sql拼接字符串末尾会多一个,符号,可用substr函数或在后台截掉。


阅读更多

没有更多推荐了,返回首页