2013-04-15 5 views
1

큰 프로젝트를 설치하고 설치 검증을 위해 SQL 스크립트를 작성하고 있습니다. 수정되는보기 중 일부는 쿼리의 경우에만 다르며 열의 이름이나 개수는 다릅니다.LONG 열을 통한 쿼리

dba_views가 쿼리 텍스트를 LONG 열에 저장하기 때문에 확인하기가 어렵습니다. 뷰는 코드의 특정 텍스트 문자열을 포함하는 경우

select * 
    from dba_views 
where name = 'LOCKED_DOCUMENTS_V' 
    and instr(upper(text), 'TLP') > 0; 

보고,하지만 긴 열에서 작동하지 않습니다 : 일반적으로,이 같은 쿼리를 사용합니다.

내가 지금까지 생각해 낸 유일한 점은 dba_views에서 text_length를 확인할 수 있지만 실제로 쿼리를 확인하는 것이 좋습니다.

SQL * Plus에서 실행되는 SQL 스크립트에서이를 수행하는 방법에 대한 의견이 있으십니까?

감사합니다, 댄

+0

나는 당신이이 하나에 SOL (다소 outta 행운)이라고 생각합니다. –

답변

1

이봐, 난이 같은 DBMS_METADATA.GET_DDL을 사용하십시오 다음

select 
    dbms_lob.instr(clob_contents,'TLP') 
from 
    (select 
     dbms_metadata.get_ddl('VIEW','LOCKED_DOCUMENTS_V', 'SCHEMA') clob_contents 
    from 
     dual) get_clob 

당신에게 위치를 얻을 것이다 어느 - 한이> 0 당신이 그것이 행복하다 그곳에.

+0

트릭을 할 것 같은데! 내일 더 확인해 볼 것이고, 내가 필요한 것을하면 당신의 대답을 승인 할 것입니다. 감사! – AndyDan

+0

subselect를 제거하기 위해 조금 바꿨지 만 그렇게하면 효과가 있었을 것입니다. dbms_lob.instr (dbms_metadata.get_ddl ('VIEW', 'LOCKED_DOCUMENTS_V', 'SCHEMA'), 'TLP')) 듀얼에서 ; – AndyDan