1. 程式人生 > >ORA-22922:不存在的 LOB 值

ORA-22922:不存在的 LOB 值

ORA-22922:不存在的 LOB 值

開發中遇到的奇怪問題,寫個SQL語句,在plsql中查詢沒問題,在java中呼叫會報如
上錯誤,查了一些資料,沒看太明白,只是說WM_CONCAT()函式和group by、
distinct、union關鍵字聯合使用時,會有這個問題。先記錄下解決方案。
把wm_concat(欄位)換成listagg(欄位)within group(order by(欄位))

SQL的虛擬碼:
原SQL(有問題):

SELECT T.*, B.name
        FROM A
       LEFT JOIN (SELECT T.x,TO_CHAR(WM_CONCAT(T.name)) name
                     FROM
T GROUP BY x) B ON A.x= B.x

修改後:

SELECT T.*, to_char(B.name)
  FROM A
  LEFT JOIN (SELECT T.x,
                   listagg(T.name,',')within group(order by(T.name))T.name
               FROM T
              GROUP BY x) B
    ON A.x = B.x