wm_concat
関数は文書化されておらず、Oracle 8i の時点で回避策として発見されているため、回避する必要があります。
ここでTom Kyteによって発見されたカスタム集計関数を使用した古い方法の時代以来、いくつかの新しい回避策があり、以下の例に示されています。
それらはすべてこの SQL Fiddleで再現されました。
回避策 1 - LISTAGG 関数、11g で動作:
select listagg(object_id,',') within group (order by rownum) id_string
from cr_object_group_entries_vw
回避策 2 - SYS_CONNECT_BY_PATH、10g 以降で動作:
select id_string from (
select rn, substr(sys_connect_by_path(object_id, ','),2) id_string
from (select object_id, rownum rn from cr_object_group_entries_vw)
start with rn = 1
connect by prior rn + 1 = rn
order by rn desc
)
where rownum = 1
回避策 3 - XMLAGG、10g 以降で動作:
select replace(
replace(
replace(
xmlagg(xmlelement("x",object_id)).getStringVal(),
'</x><x>',
','
),
'<x>',
''
),
'</x>',
''
) id_string
from cr_object_group_entries_vw
sys_connect_by_path
PSどのOracleバージョンで導入されたか正確にはわかりませんでしxmlagg
たが、どちらも10.2.0.4.0でうまく機能します