使用带有union和CLOB字段的select时出错ORA-00932

时间:2013-07-18 19:30:32

标签: database oracle plsql

首先,这不是this问题的重复。如果是,抱歉,但我无法通过阅读来解决我的问题。

我收到了这个错误:

ORA-00932: inconsistent datatypes: expected - got CLOB

当我尝试执行此SELECT语句时:

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

所选字段(t_txt)是CLOB数据类型。如您所见,它与同一个表的列相同。这个陈述属于一个更大的陈述,我已经把我遇到这个问题的部分隔离了。

非常感谢。

2 个答案:

答案 0 :(得分:44)

我认为问题在于使用UNION代替UNION ALLUNION运算符将两个组合并消除重复。由于无法比较CLOB类型,因此不能使用重复消除部分。

使用UNION ALL不会尝试重复删除(反正你可能没有重复),所以它应该可以工作。

答案 1 :(得分:0)

由于我重复,我无法使用UNION ALL。这个解决方案很完美,谢谢!

顺便说一句: 这是唯一正确的答案,因为UNION ALL和UNION在语义上是不同的。如果根本没有重复项,则使用UNION会产生不必要的排序开销。