Запрос, чтобы получить строку из столбца в таблице
Я ищу, чтобы сохранить имена 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:
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_') ;