Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Хранимая процедура!


Автор: DDX 13.2.2006, 14:16
D7/ADO/SQL Server 2000
хранимка не возвращает набора данных, вызываю через ExecProc, только работает порядочное время.

Вопрос: как отследить, что она уже отработала?? дождаться окончания нужно обязательно и дать юзеру возможность работать дальше.
и можно ли сделать какой-то прогрессбар выполнения?

Автор: DimW 13.2.2006, 15:29
Цитата(DDX @ 13.2.2006, 14:16 Найти цитируемый пост)
как отследить, что она уже отработала??


Цитата(DDX @ 13.2.2006, 14:16 Найти цитируемый пост)
только работает порядочное время.

ну а откуда ты знаешь что она столько работает? значит видно когда ана отработала....


Цитата(DDX @ 13.2.2006, 14:16 Найти цитируемый пост)
хранимка не возвращает набора данных

ну так процедура и неможет возвратить набор данных.

на счет прогрес бара:
на мой взгляд единственный способ это реализовать -
создаешь таблицу с полями:
id_session|progress_num
где id_session -идентификатор сесии, а progress_num процентное выполнение процедуры...

в процессе выполнения процедуры апдейтишь и коммитишь свою таблицу и из другой сесии селектишь из ее поле progress_num
Код

SELECT COUNT(progress_num) 
FROM MY_TABLE
WHERE id_session = MY_SESSION

и присваеваешь это эначение прогрес бару.

но нужно учесть что эти два процесса должны работать параллельно в разных потоках, но это уже гругая тема!!!

Автор: DDX 13.2.2006, 15:34
Цитата(DimW @ 13.2.2006, 15:29 Найти цитируемый пост)
Цитата(DDX @ 13.2.2006, 14:16 )
только работает порядочное время.


ну а откуда ты знаешь что она столько работает? значит видно когда ана отработала....


запуская с тем же параметром в query analyzer. работает порядка 6-7 секунд. Но прога не ждет это время и такое ощущение, что она пресекает выполнение процедуры каким-то образом, так как данные в итоге остаются необновленными

хрен с ним, с прогрессбаром! smile эта хранимка внутри себя вызывает другую. Мне бы дождаться выполнения хранимки!

Автор: DimW 13.2.2006, 15:45
Цитата(DDX @ 13.2.2006, 15:34 Найти цитируемый пост)
так как данные в итоге остаются необновленными


ну раз данные не обнавленные, значит она не отробатывает?

Цитата(DDX @ 13.2.2006, 15:34 Найти цитируемый пост)
Мне бы дождаться выполнения хранимки!


а чего ждать?

ты определи точно, после вызова процедуры из твоего проекта, после окончания 6-7 сек. данные в БД меняются или нет?

Автор: DDX 13.2.2006, 15:49
при вызове из дельфи - нет
при вызове напрямую - да

Автор: DimW 13.2.2006, 15:53
DDX, тогда я непонял что отслеживать если оно и так не вызывается?

может вопрос в том, что у тебя не получается с помошью ExecProc вызвать процедуру?

Автор: DDX 14.2.2006, 14:06
хранимка вызывается! профайлер показывает, что она запустилась и начала работу
но почему-то она отваливается, не отработав до конца!
хотя из под квери аналайзера под тем же логином все работает замечательно
Добавлено @ 14:20
всё!! нашел!! ураа!!!
всего-то знаете в чем дело? в хранимке был невинный оператор print, выводящий сообщения в окно сообщений!
вот из-за него-то всё и отваливалось каким- то хреном!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)