1. 程式人生 > >oracle聚合函式wmsys.wm_concat超長問題記錄

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函式或在後臺截掉。