Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Диалог из оракловой хранимки. [Оракл]


Страницы:   1 2 3

ANB ©   (2008-01-29 17:57:00) 

Чего то не видно толковых вопросов.
А вот у меня давно назрел и толкового решения я так и не придумал.
Значится проблема : имеем хранимку, которая обрабатывает много документов/записей. В процессе обработки возникает проблема, вариант решения которой неплохо было бы уточнить у пользователя. Причем для разных документов вариант может быть разный.
Вопрос : как бы получше, с минимальными ресурсами, организовать обратную связь с клиентом, не прерывая работы хранимки ?


ANB   (2008-01-29 18:59:00) [41]


> Ответ: получше было бы так не делать.

Дык и не делаю, потому как не умею :)


> разбей хранимку на части "без вопросов"
> между ними на клиенте вставляй вызов диалога

Есть у нас примеры таких хранимок - видели бы вы их код . . . А править их - ваще полное счастье . . .


> в данном случае вообще нельзя стартовать транзакцию

В оракле она сама стартует при первом изменении данных.


> на клиенте подписываешься на какую-нить очередь.

Проблема в том, что очередь нужно опрашивать. А опрашивать в той же сессии не получится - она занята выполнением хранимки. Плодить сессии тоже нехорошо - в одном проекте попробовали (для других целей) и 5 юзеров на испытаниях завалили сервер.


clickmaker   (2008-01-29 18:58:00) [42]


> [5] Petr V. Abramov ©   (29.01.08 18:56)

а в оракуле это не настраивается?
тогда получится, что сервер может ведь и откатить слишком застоявшуюся транзакцию, так и не дождавшись юзера с перекура


Petr V. Abramov   (2008-01-29 18:56:00) [43]


> clickmaker ©   (29.01.08 18:53) [4]

а транзакция никого не спрашивает, сама стартует на первом запросе.


clickmaker   (2008-01-29 18:53:00) [44]


> Сам не пробовал и тебе не советую, чем дольше транзакция,
> тем больше вероятность

в данном случае вообще нельзя стартовать транзакцию


Petr V. Abramov   (2008-01-29 18:51:00) [45]


> ANB ©   (29.01.08 17:57)  

че-то ты недоброе задумал :)
навскидку можно через AQ, примерно так:
на клиенте подписываешься на какую-нить очередь.
в хранимке когда надо спросить, кладешь в эту очередь сообщение с сутью вопроса и виснешь на dbms_aq.listen. когда клиент удосужится ответить, он кладет в очередь, которую ты listen, сообщение с сутью ответа. Хранимка отвисает, проверяет, что сообщение именно ей, если да, продолжает работать, если нет - висеть.

Сам не пробовал и тебе не советую, чем дольше транзакция, тем больше вероятность, что она повесит другие по блокировкам.


clickmaker   (2008-01-29 18:37:00) [46]

разбей хранимку на части "без вопросов"
между ними на клиенте вставляй вызов диалога


DiamondShark   (2008-01-29 18:35:00) [47]


> Вопрос : как бы получше, с минимальными ресурсами, организовать
> обратную связь с клиентом, не прерывая работы хранимки ?

Ответ: получше было бы так не делать.

А можно в Оракле использовать внешние DLL или COM-объекты? Если можно, то реализовать связь через них.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо