Krijgt u een foutmelding wanneer u wm_concat gebruikt? In tegenstelling tot functies zoals to_char, is het eigendom van wmsys en moet u mogelijk wmsys.wm_concat gebruiken om het te gebruiken. (tenzij je de nodige synoniemen aanmaakt natuurlijk).
Nu voor de eigenlijke vraag,
Deze techniek wordt stringaggregatie genoemd.
Je zou hier veel andere alternatieven kunnen vinden.
http://www.oracle-base.com/articles/ 10g/StringAggregationTechniques.php Zoek voor andere methoden naar "stragg" op http://asktom.oracle.com Nog een handige link:http://www.orafaq.com/node/2290
Dit is waarschijnlijk de meest gebruikte. Veel teams schrijven hun eigen aangepaste functies die min of meer hetzelfde doen.
CREATE OR REPLACE FUNCTION get_employees (p_deptno in emp.deptno%TYPE)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767) := NULL;
BEGIN
FOR cur_rec IN (SELECT ename FROM emp WHERE deptno = p_deptno) LOOP
l_text := l_text || ',' || cur_rec.ename;
END LOOP;
RETURN LTRIM(l_text, ',');
END;
/
SHOW ERRORS
hoewel deze oplossing werkt voor varchar2 en nummer, kan de beste generieke oplossing worden gebouwd met behulp van de Oracle ODCIAggregate-interface.
http://download-west .oracle.com/docs/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#sthref462
Implementatie voor hetzelfde is op de eerste link hierboven op www.oracle-base.com