wm_concat を使用するとエラー メッセージが表示されますか? to_char のような関数とは異なり、これは wmsys によって所有されており、使用するには wmsys.wm_concat を使用する必要がある場合があります。(もちろん、必要な同義語を作成しない限り)。
さて、実際の質問ですが、
この手法は文字列集約と呼ばれます。
ここでは、他の多くの代替手段を見つけることができます。
http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php
他の方法については、http://asktom.oracle.com で「stragg」を検索してください。
別の便利なリンク: http://www.orafaq.コム/ノード/2290
これはおそらく最も使用されているものです。多くのチームは、多かれ少なかれ同じことを行う独自のカスタム関数を作成します。
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
このソリューションは varchar2 と number に対して機能しますが、最適な汎用ソリューションは Oracle ODCIAggregate インターフェイスを使用して構築できます。
http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#sthref462
同じ実装は、www.oracle-base.com の上記の最初のリンクにあります。