1

Delphi で Zeoslib を使用して、ローカルの MySQL データベースにアクセスしています。

TZQuery オブジェクトを使用してストアド プロシージャを呼び出します。

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

このストアド プロシージャは、最終的に MySQL テーブルに値を入力します。

これらの値にアクセスする必要がありますが、MySQL がクエリの処理をいつ終了するかわかりません。処理が完了する前にテーブルにアクセスしてしまいます。

クエリが完了したかどうかを判断するためにアクセスできる.IsAvailableまたはプロパティはありますか? .IsExecutingそうでない場合、どうすればそれを行うことができますか?

4

1 に答える 1

3

クエリがまだ実行中であることを示すプロパティはありません。しかし、ZMakeRankedTable.Execute コマンドが終了すると、mysql はストアド プロシージャを処理する準備ができているはずです。そのため、プロシージャの結果がまだ利用できないときに mysql テーブルにアクセスできる状況は 3 つしかありません。

  • 並列スレッドからクエリを実行します
  • 別の接続からクエリを実行していますが、「ストアド プロシージャ接続」のトランザクションが完了していません (自動コミットもコミットも発生していません)。
  • ストアド プロシージャは遅延プロセスを起動し、すぐに戻ります。mysqlでその効果を得るにはかなりの作業を行う必要があるため、これはありそうにありません。

モデム

プロジェクト管理者 Zeoslib

于 2011-09-06T07:03:05.587 に答える