Tôi đã viết một số chương trình sử dụng hàm WM_CONCAT. Khi tôi chạy truy vấn này:WM_CONCAT with DISTINCT Clause - Gói được biên dịch so với vấn đề truy vấn độc lập
SELECT WM_CONCAT(DISTINCT employee_id)
FROM employee
WHERE ROWNUM < 20;
Nó hoạt động tốt. Khi tôi cố gắng biên dịch truy vấn tương đối giống nhau trong một chức năng gói hoặc thủ tục, nó tạo ra lỗi này: PL/SQL: ORA-30.482: Tùy chọn DISTINCT không cho phép chức năng này
FUNCTION fetch_raw_data_by_range
RETURN VARCHAR2 IS
v_some_string VARCHAR2(32000);
BEGIN
SELECT WM_CONCAT(DISTINCT employee_id)
INTO v_some_string
FROM employee
WHERE ROWNUM < 20;
RETURN v_some_string;
END;
Tôi nhận ra WM_CONCAT không hỗ trợ chính thức , nhưng ai đó có thể giải thích lý do tại sao nó sẽ hoạt động như một truy vấn độc lập với DISTINCT, nhưng không biên dịch trong một gói?
Bạn sẽ có thể để có được tương tự kết quả với hàm LISTAGG. – OldProgrammer
Tôi đã gắn thẻ này là oracle10g, không cung cấp chức năng đó – Reimius