Zeoslib: Как определить, что запрос все еще обрабатывается?

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

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

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

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

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

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

1 ответ

Решение

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

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

mdaems

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

Другие вопросы по тегам