ORA-22922:不存在的 LOB 值解决办法记录

这篇博客记录了解决ORA-22922错误的方法,该错误通常与使用WM_CONCAT函数有关。博主发现错误并非在所有联合查询中出现,而是在特定情况。解决方案包括将WM_CONCAT替换为LISTAGG函数,并在查询时对Banknames字段进行to_char处理,从而避免问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上查了只是说WM_CONCAT()函数和group by、 distinct、union关键字联合使用时,会有这个问题。其实我联合使用并没有报错

如下SQL:

SELECT SUM(Rc) Rc, SUM(Je) Je, Projectid,  Wm_Concat(Bankname) Banknames
  FROM   (SELECT t.*, b.Bankname FROM Tb_Da_c_Yapcdbank t LEFT JOIN Tb_Dim_Bank b ON t.Bankid = b.Bankid) c
  GROUP  BY Projectid

报错是我联合其他的SQL同时使用类似如下SQL:

WITH Da AS
 (SELECT SUM(Rc) Rc, SUM(Je) Je, Projectid,  Wm_Concat(Bankname) Banknames
  FROM   (SELECT t.*, b.Bankname FROM Tb_Da_c_Yapcdbank t LEFT JOIN Tb_Dim_Bank b ON t.Bankid = b.Bankid) c
  GROUP  BY Projectid),
Aa AS
 (SELECT a.Projectid,
         a.Name,
         da.Rc,
         da.Je,
         da.Banknames
  FROM   Tb_table t
  LEFT   JOIN da
  ON     da.Projectid = t.Projectid)
SELECT * FROM Aa;

解决方案

1、(来自于百度)把wm_concat(字段)换成listagg(字段)within group(order by(字段))

2、直接在查询的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值