ORA-06502:at "WMSYS.WM_CONCAT_IMPL",line 30 解決方法整理


  之前數據量少的時候,用:select wm_concat(字段) from 表 拼接數據量小的話,沒有問題,數據量超出4000個就會爆以下錯誤信息:

解決方法(Oracle 函數xmlagg拼接):

1 語法格式:SELECT xmlagg(xmlparse(content 合並字段||’,’ wellformed) order by 排序字段).getclobval() FROM 表名

 效果圖:

1  select xmlagg(xmlparse(content SECTION_NO||',' wellformed) order by SPS_ID).getclobval() SECTION_NO from REAL_PROJ_SECTION
SQL語句

 

拼接出來的語句,最后會多一個“,”,可以使用substr截取字符串和length計算字符長度配合使用

 1 格式1: substr(string string, int a, int b);
 2 
 3   格式2:substr(string string, int a) ;
 4 
 5 解釋:
 6 
 7     格式1:
 8         1、string 需要截取的字符串 
 9         2、a 截取字符串的開始位置(注:當a等於0或1時,都是從第一位開始截取)
10         3、b 要截取的字符串的長度
11 
12     格式2:
13         1、string 需要截取的字符串
14         2、a 可以理解為從第a個字符開始截取后面所有的字符串。

最終sql語句:

1 select substr(xmlagg(xmlparse(content SECTION_NO || ',' wellformed) order by SPS_ID)
2               .getclobval(),
3               0,
4               length(xmlagg(xmlparse(content SECTION_NO || ',' wellformed) order by SPS_ID)
5                      .getclobval()) - 1) SECTION_NO
6   from REAL_PROJ_SECTION

問題解決!~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM