
用了这个函数之后 就开始莫名其妙的报这个错误,啥也不干,过一阵这个错误又没了 啥情况,有人知道么
------解决思路----------------------
你的oracle版本是多少的? 应该是早期wm_concat用的varchar2(4000) 的字符超过4000了。
10.2还是11g 已经改成blob了
------解决思路----------------------
应该是11G改的,11g之后还增加了一种新用法listagg,功能基本相同,但是他可以控制连接的顺序及连接符,用法可以百度下
------解决思路----------------------
10.2.0.5以及11g的wm_concat返回的是CLOB
如果聚合以后字符串会超过4000字节,可以考虑自定义一个相同功能的函数来代替wm_concat
------解决思路----------------------
不行。因为substr的传入参数依然是varchar2,截取前就会先报错了
如果是10.2.0.5以上的版本,也就是说,如果wm_concat返回的是clob类型,那么可以先使用dbms_lob.substr先截取后,再to_char转成varchar2,如果wm_concat返回的是varchar2类型,那么只能自己建个函数来使用