ORACLE ORA22922 不存在的LOB值解决方法

出现这个错误很多时候是使用了wmsys.wm_concat的同时使用了group ,distinct 或者union,本来两者没有问题,问题在于:

1.Oracle Database 10g Enterprise Edition Release 10.2.0.5.0以后的版本wmsys.wm_concat查询出的是LOB类型

2.oralce的SQL语句中若查询了LOB字段是不能使用distinct,union,和group by等关键字的。

所以出现了以上错误,具体例子如下:

改之前

SELECT
        o.id,
      replace(wmsys.wm_concat(m.prod_id),',','&') product_id , 


FROM t_order  o
inner JOIN hbms_marprod_batch  m ON o.mar_id=m.mar_id
GROUP BY o.id;

改之后的:
SELECT
        o.id,
      (select replace(wmsys.wm_concat(m.prod_id),',','&') from hbms_marprod_batch where m.mar_id=o.mar_id ) product_id , 


FROM t_order  o;

你可能感兴趣的:(oracle)