Zeoslib: Как узнать, обрабатывается ли еще запрос? - PullRequest
1 голос
/ 06 сентября 2011

Я использую Zeoslib в Delphi для доступа к локальной базе данных MySQL.

Я вызываю хранимую процедуру с объектом TZQuery:

ZMakeRankedTable.SQL.Text :=
  'CALL MakeRankedTable(:tableA,:tableB,:SAMP_startTime,:SAMP_endTime,:Hourspan)';   

Эта хранимая процедура завершается заполнением таблицы MySQLсо значениями.

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

Есть ли свойство .IsAvailable или .IsExecuting, к которому я могу обратиться, чтобы определить, завершен ли мой запрос?Если нет, то как я могу это сделать?

1 Ответ

3 голосов
/ 06 сентября 2011

Нет доступных свойств, которые указывают, что ваш запрос все еще выполняется. Но когда команда ZMakeRankedTable.Execute завершается, mysql должен быть готов к обработке хранимой процедуры. Поэтому я вижу только 3 ситуации, когда вы можете получить доступ к таблице mysql, пока результаты процедуры еще не доступны.

  • Вы запрашиваете из параллельного потока
  • Вы запрашиваете из другого соединения, но транзакция «подключение к сохраненному процессу» не завершено (нет автоматической фиксации или фиксации произошло)
  • Ваш сохраненный процесс запускает отложенный процесс и возвращает немедленно. Что маловероятно, так как вам нужно сделать довольно много работы, чтобы иметь этот эффект в MySQL.

mdaems

Администратор проекта Zeoslib

...