将 WMSYS.WM_CONCAT 与 Oracle XE 10g 结合使用
当我尝试将 WMSYS.WM_CONCAT 与 Oracle XE 10g 结合使用时,收到编译错误:ORA-00904: "WMSYS"."WM_CONCAT": 无效标识符
。任何人都可以验证这确实是由于 XE 缺乏此(未记录的)功能吗?如果可以的话,有什么办法可以在XE中启用它吗?
When I try to use WMSYS.WM_CONCAT with Oracle XE 10g, I receive a compilation error: ORA-00904: "WMSYS"."WM_CONCAT": invalid identifier
. Can anyone verify that this is indeed due to XE lacking this (undocumented) feature? If so, is there anyway to enable it in XE?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我找到了几个参考站点,但没有成功启用它。我最终编写了自己的函数来处理串联。
然后可以将其调用为
SELECT unique CONCAT_LIST(CURSOR(SELECT id FROM test_table1), ',') test_table1 FROM Dual
I had found a couple reference sites, but had no luck enabling it. I ended up writing my own function to handle the concatenation.
Then it can be called as
SELECT distinct CONCAT_LIST(CURSOR(SELECT id FROM test_table1), ',') test_table1 FROM dual
来源:链接。
自己创建这个函数即可:
Source: link.
Just create this function by yourself:
建议不要使用WM_CONCAT,因为它是一个未记录的功能,并且已从 12c 版本中删除。请参阅 为什么不使用 WM_CONCAT Oracle 中的函数?
如果您使用的是11gR2 及更高版本,请使用LISTAGG。
对于 11g 之前 不支持
LISTAGG
的版本,您可以使用 ROW_NUMBER() 和 SYS_CONNECT_BY_PATH 函数。例如,
It is recommended not to use WM_CONCAT since it is an undocumented feature and it has been removed from 12c version. See Why not use WM_CONCAT function in Oracle?
If you are on 11gR2 and up, use LISTAGG.
For version prior to 11g where
LISTAGG
is not supported, you could use ROW_NUMBER() and SYS_CONNECT_BY_PATH functions.For example,