有很多人问关于新版本中wmsys.wm_concat函数无法使用的问题。 对于该函数,oracle官方的态度是其从来没有将该函数列入任何官方文档中,这个函数仅仅是让oracle dev研发在针对内部对象例如sys的存储过程、字典表等使用的,并没有鼓励普通的应用开发者去使用该
有很多人问关于新版本中wmsys.wm_concat函数无法使用的问题。
对于该函数,oracle官方的态度是其从来没有将该函数列入任何官方文档中,这个函数仅仅是让oracle dev研发在针对内部对象例如sys的存储过程、字典表等使用的,并没有鼓励普通的应用开发者去使用该wmsys.wm_concat函数,但是由于部分应用开发者发现了这个函数,而且觉得较为好用,所以在应用程序编写过程中大量使用该函数,其结果是由于oracle对该函数在后续版本中的修改(包括fix、增强)乃至于完全去掉这个函数都是有可能的。
不少人就遇到了这个问题,在新的11.2中没有找到该wmsys.wm_concat函数,也就意味着其应用程序无法在11.2上正常运行。
这里可以说最初发现这个wmsys.wm_concat函数的人,即做了一件好事,同时又做了一件坏事。
oracle官方的态度是在11.2中应当使用 listagg函数而非wmsys.wm_concat。
关于listagg:
oracle? database sql language reference 11g?release 2 (11.2)
oracle? database sql language reference 12c?release 1 (12.1)
但国内的一些朋友肯定还会坚持要在11.2中使用wmsys.wm_concat,这里提供一种workaround,自己用source来创建wmsys.wm_concat
sql>? create or replacetype wm_concat_impl wrappeda0000001abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdd270 160bg9hz+fbwa888vezgvihfs/oop0wg433f64df3qcwe7vehmhtfcue3y+jrsniv3csuvmne3gy93dtr+ccsu1n+uqdgbtzhcf2hidr8lpzfgf2bmctvmglhqbtajtftnrdq3p093ncwb32oyx3zfdteh2jpjm3uwyyt8kzbfjiyxrwglfrapow32cpy0ernvdbt2xftamxkcsnnqsotiga83w6dekw+rwybu9l/epyfkmqzebncnsindf8fa1sm6vdqieanlcqnapj11a0na8hk6psdsaey+xfdmupcwsvg6gmrsv4qcguhocqw2amxrvmqpxjootpptbxbfzc7horgbriui=/type created.#www.askmaclean.comsql>? create or replace function wm_concat wrappeda0000001abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd858 96+cuw1mafzpvr6nonxkvmxy2o9pswg8ezgcflcnl+xhzy8k7/cgzcvrpnfmpnx3tam7h0zsxdj57asr2ym9ztfldfmfu+rdpau8vgorksvtvg+dmaor4c+nta+pit2kdbepi5zhzugqameskedq==/function created.#http://www.askmaclean.com/archives/wmsys-wm_concat.html?#www.askmaclean.comsql>? select wm_concat(object_id) from sys.user_objects/wm_concat(object_id)? --------------------------------------------------------------------------------108674,108672,53144,53147,53150,53151,53162 1 row selected.
related posts:
oracle用户密码使用特殊符号,例如&(and)、$(dollar)、#(pound)、*(star)等