Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Вниз

События Interbase   Найти похожие ветки 

 
Juice ©   (2005-07-14 19:00) [0]

В базе есть весьма продолжительная ХП, настолько что на клиентской стороне я вызываю эту ХП из отдельного потока и отображаю на форме ПрогрессБар. Суть логики процедуры содержится в большой циклической выборке for select, и вот я решил перед этим циклом сначала просто узнать кол-во записей которые в него входят, послать сообщение с этим кол-вом, а затем после кажого suspend в теле цикла снова инициировать сообщение в котором передавать счетчик.  Таким образом приложение, подписавшееся на эти события должно получать реальный прогресс выполнения ХП. Вот тут у меня маленькая путаница. Во-первых, это все дествует в рамках транзакции или нет, т.е. будут ли другие подписаные  приложения получать уведомление о событии в моей транзакции ? Насколько я помню то да. Но если это так, то это легко решимо - передать ХП некий ID своего приложения и заставить добавлять в сообщение этот ID, таким образом паралельно-выполняемые клиенты будут при получении события сравнивать полученый от события ID со своим и отсеивать чужие. И второй вопрос. Прочитал, что реально события можно обработать только после комита транзакции, и не могу найти где я это прочитал :) Вот тут неразбериха, комита какой транзакции? Той, в контексте которой эти события генерируются или ... ?


 
P.N.P. ©   (2005-07-14 19:56) [1]

>Той, в контексте которой эти события генерируются
В той.
А насчет счетчика - почему бы не воспользоваться генератором?
Если FB1.5 то:
Создать временный генератор перед выполнением процедуры, передавать
в процедуру имя этого генератора и в процедуре изменять его значение
execute statement "select gen_id(generator,1) from rdb$database"
а на клиенте через опр. промежутки времени проверять генератор
select gen_id(generator,0) from rdb$database
После выполнения процедуры грохаем генератор и все.


 
juice ©   (2005-07-14 21:23) [2]

Сэнкс, тоже вариант.


 
Johnmen ©   (2005-07-15 09:44) [3]

Только придётся с определённой периодичностью делать b/r. Ведь нельзя бесконечно выполнять DDL запросы без b/r.


 
Juice ©   (2005-07-15 10:52) [4]


> Той, в контексте которой эти события генерируются

В связи с этим хочу кое-чего спросить. Тут мне некогда говорили что в пределах ХП и тригеров нельзя комититься. Но я так и не понял смысла, ведь процедуры работают в рамках транзакций ?


 
Johnmen ©   (2005-07-15 11:11) [5]

А управляет транзакциями КЛИЕНТ.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
1-1123239022
rolex
2005-08-05 14:50
2005.08.28
Как в ListView список прокрутить в самый конец?


6-1116131265
A№t0№
2005-05-15 08:27
2005.08.28
Определение подключения к интернету


1-1123612655
Aleksandrrr
2005-08-09 22:37
2005.08.28
Блокировка выделенных клавиш !!!


11-1106119944
Ajax
2005-01-19 10:32
2005.08.28
Default button


14-1122924519
Andy BitOff
2005-08-01 23:28
2005.08.28
Загадки из журнала "Мурзилка" двадцатилетней давности





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский