Oracle 19c 确实不再支持 wm_concat 函数。这个函数是一个非正式的、未公开的聚合函数,它在之前的Oracle版本中(如Oracle 8i、9i、10g和11g)被广泛使用,但在后续版本中逐渐被弃用并最终在Oracle 12c及以后的版本中完全移除。Oracle 19c作为Oracle数据库的较新版本,自然也不再支持这个函数。
最近项目Oracle数据库升级由11g升到19C,在验证过程中发现wm_concat函数竟然失效了。 经过网上查询资料发现,wm_concat函数是oracle的非公开函数,在新版的oracle中不支持该函数。 1.2 解决方案 因该函数在代码中使用次数过多,在不改动代码前提下,选择重新创建该函数。建议后续在开发过程中不建议再使用该函数。 1.3 实施...
select testid,wm_concat(test) as test,wm_concat(testdlj) as testdlj from test t group by testid * ERROR at line 1: ORA-00904: "WM_CONCAT": invalid identifier 小结:如上所示,在19c中使用wm_concat函数,出现报错ora-00904.该函数在oracle 19c中不再支持. 当数据库从11g升到19c后,若该函数...
首先分析一下,Oracle19C不兼容vm_concat列转行函数,并不代表其它函数不兼容,或许可以找到其它代替的,通过找资料,发现了Oracle11提供的另外一个函数:listagg()函数 语法:listagg(参数,‘分隔符’) within group(order by 参数id),验证可以实现在19C正常使用 例如: to_char(wm_concat(t.busi_id)) 可以改写成: ...
oracle 19c wm_concat替代方法 在Oracle 19c中,wm_concat函数已被弃用,因此需要使用其他方法来替代。一种常用的替代方法是使用listagg函数。listagg函数可以将多个行的值连接成一个字符串,通过指定分隔符进行分隔。 以下是使用listagg函数替代wm_concat函数的示例: 假设有一个名为employees的表,其中包含employee_id和...
Oracle取消了WM_CONCAT函数是因为该函数存在一些性能和安全问题。具体来说,WM_CONCAT函数在处理大型数据集时会导致性能下降,并且容易受到SQL注入攻击。因此,Oracle决定在较新的版本中移除该函数,以提高系统的稳定性和安全性。替代方案包括使用LISTAGG函数或自定义聚合函数来实现类似的功能。 0 赞 0 踩...
WM_CONCAT是oracle的非公开函数,并不鼓励使用,新版本oracle并没有带此函数,需要手工加上。 1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:sqlplus -logon sys/123 as sysdba 3、执行@C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmaggrb.plb; ...
1. wm_concat的使用 -- 按job分组,并在每个job后显示对应的所有员工姓名(姓名用逗号分开)SELECTjob,wm_concat(ename)FROMempGROUPBYjob; 2. wm_concat的问题 高版本的oracle舍弃了wm_concat函数,19版本使用该函数会报错 wm_concat标识符无法识别 3. listagg函数替代wm_concat ...
是的,实际上Oracle 11g之后就不再推荐使用这个函数了,在处理varchar2的时候会导致temp使用暴涨。 然而,很多应用程序在12c或19c中可能自定义了类似wm_concat的函数,例如 my_wm_concat。这些函数被广泛使用在应用程序中。当这些应用程序的数据库迁移到国产数据库如MogDB时,如果希望数据库层面兼容而不修改应用代码,通常...