петък, 14 октомври 2011 г.

Проблем с Oracle XE и wm_concat


WM_CONCAT е недокументирана функция, изглежда присъстваща единствено в комерсиалните версии на Oracle базите данни. Това което прави най-общо е да разделя даден текст Повече за нея може да откриете тук. Поправянето на код с нея става по два начина. Първият е описан от Oracle guru-то Tom Kyte. Общо взето създавате няколко типа и подобна функция STRAGG и само замествате кода. Ако не ви се занимава да правите това съществува и друг начин. Той е с употребата на по-прости функции, но изглежда доста по-грозен. Как да преправите код съдържащ wm_concat в Oracle Express Edition такъв без - пример:

SELECT wm_concat(column) FROM dual;
/
трябва да стане:
SELECT RTRIM(XMLAGG(XMLELEMENT(e,(column) || ',')).EXTRACT('//text()'),',') from dual;
/
Самите Oracle препоръчват да се използва LISTAGG.

Няма коментари: