Bạn có gặp thông báo lỗi khi sử dụng wm_concat không? Không giống như các hàm như to_char, nó thuộc sở hữu của wmsys và bạn có thể cần phải sử dụng wmsys.wm_concat để sử dụng nó. (tất nhiên là trừ khi bạn tạo các từ đồng nghĩa cần thiết).
Bây giờ cho câu hỏi thực tế,
Kỹ thuật này được gọi là tổng hợp chuỗi.
Bạn có thể tìm thấy rất nhiều lựa chọn thay thế khác tại đây.
http://www.oracle-base.com/articles/ 10g / StringAggregationTechniques.php Đối với các phương pháp khác, hãy tìm kiếm "stragg" trên http://asktom.oracle.com Một liên kết hữu ích khác: http://www.orafaq.com/node/2290
Đây có lẽ là hàm được sử dụng nhiều nhất. Nhiều nhóm viết các hàm tùy chỉnh của riêng họ mà ít nhiều cũng làm được như vậy.
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
trong khi giải pháp này hoạt động cho varchar2 và number, giải pháp chung tốt nhất có thể được xây dựng bằng giao diện Oracle ODCIAggregate.
Việc triển khai tương tự ở liên kết đầu tiên ở trên tại www.oracle-base.com