Oracle孤陋寡闻之wm_concat之巨坑

博客内容涉及Oracle数据库中wm_concat函数在不同版本间的行为差异,导致的字段类型异常和序列化问题。作者在10G版本测试正常,但在某些环境下遇到问题。解决方案是使用listagg函数替代wm_concat,进行数据拼接和分页操作。博客探讨了数据库版本对特定函数的影响以及如何适应性地修改代码。
摘要由CSDN通过智能技术生成

首先先来张报错的图
在这里插入图片描述
首先数据库里的字段是varchar2类型的 这里报错 好像是colb(4000)类型 这就挺滑稽的了 怎么可能?还有序列化异常 更可恶的是爆了个ArrayList->hashmap异常?what???
这条sql是做了一个左外连接 然后要求拼接右表的字段的 还做了分页操作 所以用了wm_concat函数 本地测试没问题(oracle数据库版本10G)测试环境就不行了 而且是有些页码可以 有些页码不可以
那么原因就是oracle版本对wm_concat函数的支持问题 查询资料
有这么一段话:
在这里插入图片描述
Ok 这就 解释了为什么会爆一个colb的异常 因为内部是将wm_concat函数的返回值变为了colb类型
那么就找个函数替换掉wm_concat:
在这里插入图片描述
listagg好像可以喔 再看看用法:
在这里插入图片描述
接着改代码 完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值