Frage

Ich verwende Zeoslib in Delphi, um auf eine lokale MySQL -Datenbank zuzugreifen.

Ich rufe eine gespeicherte Prozedur mit dem Tzquery -Objekt auf:

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

Diese gespeicherte Prozedur füllt eine MySQL -Tabelle mit Werten.

Ich muss auf diese Werte zugreifen, aber ich habe keine Ahnung, wann MySQL die Abfrage beendet hat. Am Ende greife ich auf die Tabelle zu, bevor die Verarbeitung abgeschlossen ist.

Gibt es eine .IsAvailable oder .IsExecuting Eigenschaft, auf die ich zugreifen kann, um festzustellen, ob meine Abfrage abgeschlossen ist? Wenn nicht, wie kann ich es dann tun?

War es hilfreich?

Lösung

Es gibt keine Eigenschaft, die anzeigt, dass Ihre Abfrage noch ausgeführt wird. Aber wenn der Befehl zmakerankedTable.execute endet, sollte MySQL bereit sein, die gespeicherte Prozedur zu verarbeiten. Ich sehe also nur 3 Situationen, in denen Sie auf die MySQL -Tabelle zugreifen können, während die Verfahrensergebnisse noch nicht verfügbar sind.

  • Sie fragen aus einem parallelen Thread
  • Sie fragen sich von einer anderen Verbindung ab, aber die Transaktion der "gespeicherten Proc -Verbindung" ist noch nicht beendet (weder autocommit noch eng passierte).
  • Ihr gespeicherter Proc startet einen verspäteten Prozess und kehrt sofort zurück. Was unwahrscheinlich ist, da Sie einige Arbeiten tun müssen, um diesen Effekt in MySQL zu haben.

mdaems

Projektadministrator Zeoslib

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top