У меня есть несколько таблиц, каждая из которых имеет столбец LOADED_TIMESTAMP
. Я хочу использовать ALL_TABLE.TABLE_NAME
, чтобы получить MAX(LOADED_TIMESTAMP)
из всех таблиц 'F_', чтобы результат запроса, например,
tablename1 2018-05-10 17:33
tablename2 2018-05-04 00:13
tablename3 2018-03-23 08:44
...
Я хочу использовать ALL_TABLES
для этого, чтобы при добавлении новых таблиц они автоматически включались.
Я планирую использовать это для ежедневной записи результатов в таблицу, поэтому у меня есть история, когда каждая таблица загружалась каждый день
Я гуглил / искал переполнение стека, но просто получаю ошибки (или «процедура PL / SQL успешно завершена», но безрезультатно!), Когда я пытаюсь выполнить код в SQL Developer ...
Начинаем ходить кругами; Любая помощь приветствуется.
Вот SQL, который у меня есть на данный момент.
DECLARE
my_sql VARCHAR(1000);
BEGIN
FOR t IN
(
SELECT t.table_name,
t.owner
FROM all_tables t
WHERE owner = 'ME'
AND Substr(t.table_name,1,2) IN ('A_',
'F_' ,
'P_') )
LOOP
my_sql := 'select max(dw_loaded_timestamp) as last_loaded from '
|| t.owner
|| '.'
|| t.table_name ;
EXECUTE IMMEDIATE my_sql;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.Put_line('ERROR!! -- '
|| SQLCODE
|| '-- '
|| SQLERRM
|| ' --' );
END;
/