Điều này dường như liên quan đến lỗi 19461687 và câu hỏi trước này . Nếu bạn kết xuất giá trị tổng hợp từ truy vấn của mình ở dạng 11gR2 hoặc 12cR1, bạn sẽ thấy:
LISTAGG_OUTPUT
--------------------------------------------------------------------------------------------------
Typ=1 Len=25 CharacterSet=AL32UTF8: 0,41,0,52,0,34,0,30,0,30,0,31,2c,0,41,0,52,0,34,0,30,0,30,0,32
Trong SQL * Plus và SQL Developer, giá trị thực được hiển thị là:
LISTAGG_OUTPUT
----------------------------------------
A R 4 0 0 1, A R 4 0 0 2
và bạn không thể sao chép giá trị từ SQL Developer. (Trong 12cR2, các số 0 không còn xuất hiện trong kết xuất nữa, giá trị được hiển thị mà không có khoảng cách và bạn có thể sao chép nó, do đó, lỗi này dường như đã được sửa.)
Những byte null đó dường như đang khiến Toad không hiển thị giá trị nào cả, có lẽ vì nó nhìn thấy byte rỗng đầu tiên và coi nó như một dấu chấm dứt chuỗi (hoặc một cái gì đó dọc theo những dòng đó).
SQL Fiddle dường như đối phó với điều này, nhưng db <> fiddle dường như cũng có vấn đề với nó và không trả về bất kỳ thứ gì cho toàn bộ fiddle khi truy vấn đó xuất hiện.
Bạn có thể xác định lại cột trong bảng của mình là varchar2
thay vì nvarchar2
, nhưng tôi cho rằng đó là kiểu dữ liệu vì một lý do nào đó, vì vậy điều đó có thể không thực tế.
Vì vậy, bạn có thể truyền nó như một phần của truy vấn thay thế:
SELECT LISTAGG(CAST(MOD_CODE AS VARCHAR2(12)),',')
WITHIN GROUP (ORDER BY MOD_CODE) LISTAGG_OUTPUT
FROM XOTEST_A
WHERE MOD_CODE IN ('AR4001','AR4002');
LISTAGG_OUTPUT
----------------------------------------
AR4001,AR4002
Hoặc xem liệu bản vá lỗi 19461687 có khắc phục được sự cố cho bạn hay không.