Aquí hay un buen artículo sobre diferentes técnicas de agregación de cadenas .
Puedo agregar otro método (basado en XML):
select rtrim(
extract(
sys_xmlagg(
xmlelement("X",ename||', ')
),
'/ROWSET/X/text()'
).getstringval(),
', '
)
from emp;
Y en la versión 2 de 11g finalmente tenemos incorporado LISTAGG función.