Главная страница
    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.45 MB
Время: 0.039 c
1-1122997202
Инна
2005-08-02 19:40
2005.08.28
Два меню на одной форме


14-1123249871
Jeer
2005-08-05 17:51
2005.08.28
Ни кто из нас так ни где хорошо не работал как в своем резюме


3-1121339475
ks
2005-07-14 15:11
2005.08.28
Изменение даных в TQuery


3-1121520621
Cardinal
2005-07-16 17:30
2005.08.28
Индекс по дате


14-1123159211
oldman
2005-08-04 16:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский