結果セットを返さないクエリの実行

提供: RAD Studio
移動先: 案内検索

クエリタイプ データセットの使用 への移動


SELECT クエリのようにレコードのセットを返すクエリの場合、データセットにレコードを入れるのと同じ方法でクエリを実行します。つまり、ActiveTrue に設定するか、Open メソッドを呼び出します。

ただし、レコードを返さない SQL コマンドも多くあります。たとえば、データ定義言語(DDL)や SELECT 文以外のデータ操作言語(DML)を使用する文などです(たとえば INSERT、DELETE、UPDATE、CREATE INDEX、ALTER TABLE などのコマンドはレコードを返しません)。

クエリタイプのデータセットであれば、ExecSQL を次のように呼び出すことで、結果セットを返さないクエリを実行することができます。

CustomerQuery.ExecSQL;  { query does not return a result set }
CustomerQuery->ExecSQL(); // Does not return a result set

ヒント: 同じクエリを複数回実行する場合は、Prepared プロパティを True に設定するとよいでしょう。

クエリがレコードを返さなくても、影響が及んだレコードの数(DELETE クエリで削除されたレコード数など)を知りたい場合があります。ExecSQL を呼び出した後に RowsAffected プロパティを見ると、影響を受けたレコードの数がわかります。

ヒント: クエリが結果セットを返すかどうかが設計時にわからない場合(たとえば実行時にユーザーが動的にクエリを指定する場合)には、両方の種類のクエリ実行文を try...except ブロックに記述することができます。Open メソッドの呼び出しを try 句に入れてください。アクション クエリは、Open メソッドでクエリをアクティブ化すると実行されますが、それに加えて例外が発生します。例外を確認し、結果セットがないことを示しているだけであれば、その例外を抑制します (たとえば TQuery の場合には、これは ENoResultSet 例外で示されます)。

関連項目