2017-11-02 1 views
0

테이블 dba_jobs에있는 열 WHAT에서 변수에 MV 이름을 저장하려고합니다.테이블의 열에서 문자열을 가져 오는 쿼리

MV 이름 AP_OTHER_PERIODS_EMP_MV을 변수에 저장하여 해당 변수를 MV 이름을 전달하는 프로 시저의 매개 변수로 사용할 수있게하려고합니다.

나는이 특정 작업에만 사용할 수 있지만 모든 작업에서 사용할 수있는 일반 코드를 찾고 있습니다.

select substr(CAST(WHAT AS VARCHAR(4000)),33,23) as w from DBA_JOBS where BROKEN = 'N';

WHAT 골의 콘텐츠는 다음과 같이이다 : (dbms_refresh.refresh('"SYSTEM"."AP_OTHER_PERIODS_EMP_MV"');)

하지만 난 단지 MV 이름이 "AP_"에서 시작하는 열을 형성해야합니다.

이미지는 DBA_JOBS 표가 포함 Image contains the DBA_JOBS Table

+0

테스트 데이터 세트를 제공 할 수 있습니까? 고려해야 할 행이 많고 피해야 할 행이 거의없는 것이 도움이됩니다. – mikcutu

답변

0

당신은이 쿼리를 시도 할 수 있습니다. DBA_JOBSWHAT 열은 이미 VARCHAR2(4000)입니다. 다시 CAST 할 필요가 없습니다.

SELECT REGEXP_SUBSTR(WHAT, 'dbms_refresh.refresh\(''.+\."(AP_.+)"''\)' ,1,1,'i',1) 
FROM dba_jobs 
WHERE BROKEN = 'N' 
AND REGEXP_LIKE (WHAT,'dbms_refresh.refresh\(''.+\."AP_') ; 
관련 문제