2013-07-18 24 views
17

Trước hết, đây không phải là bản sao của câu hỏi this. Nếu có, xin lỗi nhưng tôi không thể giải quyết vấn đề của tôi bằng cách đọc nó.Lỗi ORA-00932 khi sử dụng lựa chọn với các trường công đoàn và CLOB

Tôi nhận được lỗi này:

ORA-00932: inconsistent datatypes: expected - got CLOB 

Khi tôi cố gắng thực hiện câu lệnh SELECT này:

SELECT TXT.t_txt 
    FROM CITADM.tb_avu_txt_grc GR 
INNER JOIN CITADM.tb_avu_txt TXT 
    ON (GR.e_txt = TXT.e_txt and GR.u_txt = TXT.u_txt) 
WHERE TXT.u_lin_ord = 1 
UNION 
SELECT TXT.t_txt 
    FROM CITADM.tb_avu_txt_grc_cvd GRC 
INNER JOIN CITADM.tb_avu_txt TXT 
    ON (GRC.e_txt = TXT.e_txt and GRC.u_txt = TXT.u_txt) 
WHERE TXT.u_lin_ord = 2 

Các lĩnh vực được lựa chọn (t_txt) là CLOB datatype. Như bạn có thể thấy, đó là cùng một cột của cùng một bảng. Tuyên bố này thuộc về một tuyên bố lớn hơn, tôi đã cô lập phần mà tôi đang gặp vấn đề này.

Cảm ơn bạn rất nhiều.

+1

Thử 'UNION ALL' thay vì' UNION'. –

Trả lời

29

Tôi tin rằng sự cố là việc sử dụng UNION thay vì UNION ALL. Toán tử UNION sẽ kết hợp hai bộ và loại bỏ các bản sao. Vì không thể so sánh các loại CLOB, nên không thể loại bỏ phần trùng lặp.

Sử dụng UNION ALL sẽ không cố gắng loại bỏ trùng lặp (có thể bạn không có bản sao anyways) vì vậy nó sẽ hoạt động.

+0

Đã hoạt động! Cảm ơn bạn (: – gabsferreira

+0

câu hỏi cũ và câu trả lời nhưng điều này làm việc cho tôi ngày hôm nay, cảm ơn –

0

Vì tôi bản sao, tôi không thể sử dụng UNION ALL. Giải pháp này hoạt động hoàn hảo, cảm ơn bạn!

BTW: Đây là câu trả lời đúng duy nhất, vì UNION ALL và UNION có ngữ nghĩa khác nhau. Nếu không có bản sao nào cả, việc sử dụng UNION sẽ áp đặt chi phí sắp xếp không cần thiết.

+0

Điều này nên được bình luận. –

Các vấn đề liên quan