Запрос, чтобы получить строку из столбца в таблице

Я ищу, чтобы сохранить имена MV в переменную из столбца WHAT который находится в таблице dba_jobs,

Я хочу имя 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 Col это что-то вроде этого: (dbms_refresh.refresh('"SYSTEM"."AP_OTHER_PERIODS_EMP_MV"');)

но мне нужно только имя MV из столбца, начиная с "AP_".

Изображение содержит таблицу DBA_JOBS:Изображение содержит таблицу DBA_JOBS

1 ответ

Вы можете попробовать этот запрос. Обратите внимание, что WHAT колонка в DBA_JOBS уже 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_') ;
Другие вопросы по тегам