使用 wm_concat 时是否收到错误消息?
与 to_char 等函数不同,它由 wmsys 所有,您可能需要使用 wmsys.wm_concat 才能使用它。 (当然,除非您创建必要的同义词)。
现在针对实际问题,
这种技术称为字符串聚合。
您可以在这里找到很多其他替代方案。
http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php对于其他方法,请搜索“stragg”http://asktom.oracle.com http://asktom.oracle.com另一个有用的链接:http://www.orafaq.com/node/2290 http://www.orafaq.com/node/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 http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#sthref462
其实现位于上面的第一个链接 www.oracle-base.com