Как получить статус запроса оракула в Pro * C? - PullRequest
0 голосов
/ 23 августа 2011

Мой код запускает запрос выбора оракула на сервере.Сервер может быть свободен или может быть занят в определенное время. Теперь я использую механизм тайм-аута в Pro * C, который истекает через 10 секунд и отменяет поток, в котором выполнялся запрос Oracle (если он все еще выполняется).

Теперь проблема, с которой я сталкиваюсь, заключается в том, что функция тайм-аута запланирована для завершения потоков через 10 секунд, и это очень хорошо.Однако он не может определить, был ли запрос оракула все еще в состоянии ожидания во время завершения или он возвращал результаты / выполнял процедуру / бла-бла ...

То, что я хочу, это функция /механизм / все, что может запрашивать состояние инициированного запроса оракула и действовать следующим образом: через 10 секунд лучшим вариантом будет использование

IF (query is still in waiting state)
    DO terminate all threads;
ELSE IF (query is fetching data/doing some processing)
    DO wait for the fetching/processing to complete and then terminate all threads;

вызова функции Pro * C или Oracle вместо использованиясложный код, если возможно.

1 Ответ

0 голосов
/ 06 мая 2012

Что для вас означает «выборка данных / некоторая обработка»?В общем, поскольку Oracle выполняет запрос, когда приложение извлекает данные, запрос будет чередоваться между активным выполнением (которое может быть в состоянии ожидания) и возвратом данных клиенту.Например, если вы отправляете 50 строк за один раз клиенту, Oracle только выполняет запрос достаточно далеко, чтобы определить первые 50 строк, он отправляет эти строки клиенту и ожидает, пока клиент запросит следующие 50 строк.прежде чем продолжить выполнение запроса, чтобы получить следующие 50 строк.

...