box4
@box4

Временная метка при запросе в базу, как реализовать?

Таблица с ntimestamp#. Каким образом сделать, чтобы каждый запрос начинался с того момента когда был запущен предыдущий?
select column1 
from table1
where table1.ntimestamp > ?
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 2
tsklab
@tsklab
Системный администратор, программист
Хранить время запуска в отдельной таблице.
Ответ написан
Если под "каждый запрос начинался с того момента когда был запущен предыдущий" подразумевается, что необходимы данные на конкретный период времени, т.е. не учитывая изменения в таблице с указанного времени, то можно воспользоваться ретроспективной областью памяти(https://docs.oracle.com/cd/B14117_01/appdev.101/b1... Пример:
SELECT * FROM employee AS OF TIMESTAMP
TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
WHERE name = 'JOHN';
Т.е. запрос к таблице -SELECT * FROM employee
передаем метку scn - AS OF TIMESTAMP TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
условие- WHERE name = 'JOHN';
Перед выполнением первого запроса сохраняем метку времени и вставляем таким образом во все запросы.
Если разница в долях секундах приемлема, то можно создать курсоры подряд ко всем интересующим таблицам
т.е.
declare
х1 refcursor;
х2 refcursor;
...
begin
open х1 for select * from t1;
open х2 for select * from t2;
....
end;
Затем при работе курсоры будут выводить данные с разницей в доли секунд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы