Erhalten Sie eine Fehlermeldung, wenn Sie wm_concat verwenden? Im Gegensatz zu Funktionen wie to_char gehört es wmsys und Sie müssen möglicherweise wmsys.wm_concat verwenden, um es zu verwenden. (es sei denn, Sie erstellen natürlich die notwendigen Synonyme).
Nun zur eigentlichen Frage,
Diese Technik wird String-Aggregation genannt.
Hier finden Sie viele weitere Alternativen.
http://www.oracle-base.com/articles/ 10g/StringAggregationTechniques.php Suchen Sie für andere Methoden nach „stragg“ auf http://asktom.oracle.com Ein weiterer nützlicher Link:http://www.orafaq.com/node/2290
Dies ist wahrscheinlich die am häufigsten verwendete. Viele Teams schreiben ihre eigenen benutzerdefinierten Funktionen, die mehr oder weniger dasselbe tun.
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
Während diese Lösung für varchar2 und number funktioniert, kann die beste generische Lösung mit der Oracle ODCIAggregate-Schnittstelle erstellt werden.
http://download-west .oracle.com/docs/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#sthref462
Die Implementierung dafür findet sich unter dem ersten Link oben auf www.oracle-base.com