oracle wm_concat 函數導致ORA-22922: 不存在的 LOB 值

原來,wm_concat函數在10G返回的是字符串,到了11G返回的是LOB類型,在程序裏面是使用字符串類型,導致了問題的出現:

假設有視圖A,A視圖有id和name字段

10G版的SQL:

select  wmsys.wm_concat(distinct(a.name) from A a       沒問題

網上大部分的答案的SQL:

select  to_char(wmsys.wm_concat(distinct(a.name)) from A a       有問題

如果這個視圖的字段都有值,不會報錯。當name爲空是,java程序一樣會報“ORA-22922: 不存在的 LOB 值”

這時候應該選擇使用listagg函數去替換wmsys.wm_concat函數

select listagg(a.name,',' ) within GROUP (order by (a.name)) from A a

這樣,爲空的字段則會是字符串類型了。


————————————————
版權聲明:本文爲CSDN博主「小明哥哥的哥哥」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq1021623362/article/details/79033588

發佈了33 篇原創文章 · 獲贊 27 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章