Viene visualizzato un messaggio di errore quando si utilizza wm_concat? A differenza di funzioni come to_char, è di proprietà di wmsys e potrebbe essere necessario utilizzare wmsys.wm_concat per utilizzarlo. (a meno che tu non crei i sinonimi necessari ovviamente).
Ora per la domanda vera e propria,
Questa tecnica è chiamata aggregazione di stringhe.
Potresti trovare molte altre alternative qui.
http://www.oracle-base.com/articles/ 10 g/StringAggregationTechniques.php Per altri metodi, cerca "stragg" su http://asktom.oracle.com Un altro link utile :http://www.orafaq.com/node/2290
Questo è probabilmente il più utilizzato. Molti team scrivono le proprie funzioni personalizzate che più o meno fanno lo stesso.
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
mentre questa soluzione funziona per varchar2 e number, la migliore soluzione generica può essere creata utilizzando l'interfaccia Oracle ODCIAggregate.
http://download-west .oracle.com/docs/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#sthref462
L'implementazione per lo stesso è al primo link sopra su www.oracle-base.com