我有一个表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
知道原因是什么。
答案 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';