2012-08-01 5 views
0

SyncTokenLock 테이블에 CLOB 유형 인 lockName이 있습니다. 내가 SQLDeveloper에서 쿼리를 다음 실행할 때 -Oracle : 쿼리를 실행할 때 오류가 발생했습니다.

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

을 나는 예외 다음 얻을 -이 쿼리는 오라클 11g에 최대 절전 모드 (3.6.10)를 통해 실행될 때 나는 비슷한 오류가

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

. 최대 절전 모드 예외를 throw합니다 -

ORA-00932: inconsistent datatypes: expected - got CLOB 

어떤 이유 일 수 있습니다.

+0

오류가 보인다 절 곳에서 오라클은'CLOB'의 데이터 유형을 허용하지 않기 때문에. 확실하지 않다. 누구나 확인할 수 있겠습니까? – devang

답변

0

올바른지, WHERE 절에서 CLOB와 같음을 사용할 수 없습니다.

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

이 열 정말는 CLOB해야합니까

:하지만 당신은이 작업을 수행 할 수 있습니까? 4000 자 이상의 값을 기대합니까? 그렇지 않은 경우 VARCHAR2를 사용하십시오.

+0

심지어 CLOB이 필요한지 확실하지 않습니다. PostgreSQL에서 실행되는 레거시 코드가 있습니다. 오라클에 대한 지원을 추가해야합니다. 이 C 럼은 VARCHAR (4096)로 지정되었으므로 Oracle 용 스키마를 디자인 할 때 사용되는 CLOB입니다. 현재 CLOB에서 열 유형을 VARCHAR2 (4000)로 변경하여 작동하게했습니다. 확실한 방법은 확실합니다. 당신의 솔루션은 오라클에 대해서는 작동하지만 PostgreSQL에는 적용되지 않습니다. 오라클과 PostgreSQL에 대해 말하는 데이터베이스를 수행하기 위해 최대 절전 모드를 사용하고 있습니다. – devang

0

대신에 등호를 사용하여, 당신은 like을 사용할 수 있습니다 :

select * from SyncTokenLock where lockName like 'com.vmware.horizon.datastore.impl.ProvisioningStateDataServiceImpl'; 
관련 문제