oracle聚合函数wmsys.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函数或在后台截掉。

猜你喜欢

转载自blog.csdn.net/liuxiangke0210/article/details/84677854