Oracle:执行查询时出错

时间:2012-08-01 19:04:31

标签: oracle11g oracle-sqldeveloper hibernate3

我有一个表SyncTokenLock,其列lockName是CLOB类型。当我从SQLDeveloper运行以下查询 -

select * from SyncTokenLock where 
lockName='com.vmware.horizon.datastore.impl.ProvisioningStateDataServiceImpl';

我得到以下异常 -

ORA-00932: inconsistent datatypes: expected - got CLOB
00932. 00000 -  "inconsistent datatypes: expected %s got %s"

当通过Hibernate(3.6.10)针对Oracle 11g执行此查询时,我得到类似的错误。 Hibernate抛出异常 -

ORA-00932: inconsistent datatypes: expected - got CLOB 

知道原因是什么。

2 个答案:

答案 0 :(得分:0)

正确,您不能在WHERE子句中使用与CLOB的相等性。但你可以这样做:

SELECT * FROM SyncTokenLock 
 WHERE dbms_lob.substr(lockName, 100) = 
           'com.vmware.horizon.datastore.impl.ProvisioningStateDataServiceImpl';

你的专栏真的是否需要成为CLOB?您期望超过4000个字符的值吗?如果没有,请使用VARCHAR2。

答案 1 :(得分:0)

您可以使用like

,而不是使用等号
select * from SyncTokenLock where lockName like 'com.vmware.horizon.datastore.impl.ProvisioningStateDataServiceImpl';