я написал следующую функцию:Oracle Функция Получить Последнее обновление тайминг всех таблиц в схеме
declare
v_count DATE;
strsql VARCHAR2(200);
begin
for r in (select OBJECT_NAME from all_objects where OBJECT_TYPE='TABLE'
and OWNER='SALES'
and OBJECT_NAME LIKE 'T%'
ORDER BY OBJECT_NAME DESC)
loop
DBMS_OUTPUT.PUT_LINE(r.OBJECT_NAME);
strsql := 'select SCN_TO_TIMESTAMP(MAX(ORA_ROWSCN)) FROM : 1 INTO v_count';
execute immediate strsql USING r.OBJECT_NAME;
DBMS_OUTPUT.PUT_LINE(v_count);
end loop;
end;
К сожалению, два (плохие) вещи происходят:
- Он выдает только первый OBJECT_NAME (первый PUT_LINE).
- Он НЕ выполняет вторую PUT_LINE.
Очевидно, что я НЕ разработчик Oracle, мне просто нужна быстрая и грязная функция, чтобы показать мне последнее обновленное время для всех таблиц в данной схеме.
Может ли кто-нибудь сказать мне, что я сделал не так?
По обновлению, LAST_DDL_TIME во всех объектах дает вам правильную информацию? – kevinsky
LAST_DDL_TIME, по документам, - это когда последняя таблица была изменена с помощью команды DDL (включая Grants/Revokes). Мне нужна последняя вставка/обновление/удаление. – Jason