Каскадёр
Дата: 05.12.2012 09:59:17
Всем привет.
Внезапно образовалась тривиальная задачка.
Имеется PL/SQL блок. В нём, на определённом этапе, нужно в течение 700 секунд подождать, пока не появится запись в таблице TABLE, с определённым ID, затем продолжить блок.
Тупой DBMS_LOCK.SLEEP(xxx) это долго, нужно при появлении строки продолжать блок.
Вроде всё просто, но меня не устраивает классический LOOP с ежесекундной выборкой и проверкой на наличие искомой строки. Есть способ поэлегантнее?
P.S. Предполагается, что строка, как правило, появляется в течение 1с (ответ от сервера), но в результате сбоев связи, время может растянуться.
Понять бы
Дата: 05.12.2012 10:30:45
| Каскадёр |
|---|
Всем привет. Имеется PL/SQL блок. В нём, на определённом этапе, нужно в течение 700 секунд подождать, пока не появится запись в таблице TABLE, с определённым ID, затем продолжить блок.
|
Не совсем понятна сама задумка.
Если блок, скажем, инициировал вставку другой сессией и ждет завершения вставки, то что мешает перенести эту обработку (вставку) в сам блок? Нужна ли здесь вообще асинхронность?
Если все же нужна, то почему не использовать однотипные способы событийной синхронизации? Ведь вставка же как-то инициируется?
Каскадёр
Дата: 05.12.2012 11:05:21
Логика разбита проще некуда. «Та» процедура, которая вставляет эту строку, глубоко закрыта. А мне, чтобы узнать о появлении этой строки, остается лишь мониторить таблицу.
Да и вообще, вопрос был о том как уложить поленицу, а вы мне предлагаете топить печь углём.