2014-05-20 11 views
1

databse의 주석 필드에 값이있는 모든 항목을 찾기 위해 SQL 쿼리를 수행하려고합니다. 나는이 작업을 수행 할 때, 나는 어떻게 해결하기 위해 잘 모르겠어요 다음과 같은 오류를 얻을 :ORA-19011 오류가 발생했을 때 필드를 검색하는 방법은 무엇입니까?

ORA-19011: Character string buffer too small 
19011. 00000 - "Character string buffer too small" 
*Cause: The string result asked for is too big to return back 
*Action: Get the result as a lob instead 

을 내가 사용 QUERTY가되어 다음과 같이

select * 
from 
actionLog al 
where comments like '%GEM9_EM_SCFNY_TT%' 

어떤 도움을하는 방법에 내 쿼리를 수정하면 대단히 감사하겠습니다.

감사 마이클

+1

어떤 종류의 코멘트입니까? 이렇게하면 – EasterBunnyBugSmasher

답변

0

나는 이것을 입증 할 수있는 방법을 찾을 수가 없었다,하지만 난 like 운영자가 CLOB 필드 comments가 암시 적으로 varchar2로 변환하는 원인이되는 것으로 생각한다. 이 너무 커서 오류가 발생합니다. 대신 CLOB 데이터 형식에서 작동하도록 설계 기능을 사용하여이 문제를 해결할 수 있습니다

SELECT * 
FROM actionlog al 
WHERE DBMS_LOB.INSTR (comments, 'GEM9_EM_SCFNY_TT') <> 0 
+0

나는 다음과 같은 erroring 오류가 ORA-06553 : PLS-306 : 'INSTR' 06553. 00000에 호출에 잘못된 번호 또는 인수의 유형 - "PLS- % S : % S"의 – Michaelb88

+0

유형 주석은 XMLTYPE입니다. – Michaelb88

0

을 그 XMLTYPE 때문에 당신이 .getClobVal() 함수를 사용할 수 있습니다. 코드를 이렇게하면 작동합니다 :

select * 
from 
actionLog al 
where comments.getClobVal() like '%GEM9_EM_SCFNY_TT%' 
관련 문제