IBM データ・サーバー・ドライバーからの SQL の取り消し

Cベースのドライバの場合は SQLCancel() 機能、Java™ベースのドライバの場合は Statement.cancel 機能を使用して、リモート Db2 for z/OS® サーバー上で実行中のSQLリクエストをキャンセルすることができます。

始める前に

IBM® データサーバーのドライバーには、 Db2 for Linux®, UNIX, and Windows から入手可能な複数の種類があります。 リモート・クライアントからの SQL のキャンセルは、以下を実行することによって行えます。
  • IBM Data Server Driver for ODBC and CLI
  • IBM Data Server Driver for JDBC and SQLJ タイプ 4 接続

詳細については、 IBM データサーバーのクライアントとドライバの種類を参照してください

このタスクについて

クライアント・ドライバーの構成プロパティーを設定することで、キャンセル動作を構成することができます。

  • C ベースのドライバーの場合は、InterruptProcessingMode プロパティーを構成します。
  • Java ベースのドライバーの場合は、interruptProcessingMode プロパティーと queryTimeoutInterruptProcessingMode プロパティーを構成します。

これらのプロパティーは、アプリケーションでキャンセル要求を発行したときの動作や照会タイムアウト間隔に達したときの動作を決定します。

プロシージャー

リモート Db2 for z/OS サーバー上で実行中のSQLステートメントをキャンセルするには:

Cベースのドライバアプリケーション用の SQLCancel() 関数、またはJavaベースのドライバアプリケーション用の Statement.cancel メソッドを発行する。
注意: クライアントドライバは、クエリタイムアウト間隔に達すると、暗黙的にSQLステートメントをキャンセルすることができます。

結果

クライアント・アプリケーションから SQL ステートメントをキャンセルしても、リモート・サーバーとの元の接続は除去されません。 元の接続は、追加の SQL 要求を処理するためにアクティブなままになっています。 取り消されたステートメントに関連したカーソルはすべてクローズされ、Db2サーバーは、このメソッドを使用してステートメントをキャンセルすると、クライアント・アプリケーションに対して -952 の SQLCODE を戻します。

キャンセルできるのは、クライアント・アプリケーションからのトランザクション・レベル・ステートメント (CONNECT、COMMIT、ROLLBACK) およびバインド・ステートメントを除く、動的 SQL コードのみです。