Hitachi

Hitachi Advanced Data Binder AP開発ガイド


18.2.5 実行中のSQLをキャンセルする場合

実行中のSQLをa_rdb_SQLCancel()でキャンセルできます。キャンセルできるSQL(CLI関数)を次に示します。

a_rdb_SQLCancel()は,SQLを処理しているスレッドとは別のスレッドで実行します。SQLのキャンセルの実行例を次に示します。

SQLの実行スレッド
rtnc = a_rdb_SQLAllocStmt(hCnct, &hStmt, NULL) ;
/* DELETE文の実行 */
rtnc = a_rdb_SQLExecDirect(hCnct,
                           hStmt,
                           "DELETE FROM TABLE1",
                           NULL) ;
/* キャンセルされたかどうかをチェック */
if ( rtnc == -955 )
{
  /* キャンセル後の処理 */
}
else ;
SQLのキャンセルの実行例(別スレッドで実行)
/* SQLキャンセル機能の実行 */
rtnc = a_rdb_SQLCancel(hCnct, NULL) ;
                  /* キャンセル対象のSQLを実行しているコネクションと */
                  /* 同様のコネクションハンドルを指定 */

SQLのキャンセルが成功した場合,SQL処理を中断してトランザクションをロールバックしたあとにSQLCODEが返却されます。

a_rdb_SQLCancel()については,「19.3.1 a_rdb_SQLCancel()(SQLのキャンセル)」を参照してください。

なお,キャンセル処理はa_rdb_SQLCancel()とは非同期に実行されるため,a_rdb_SQLCancel()の正常終了はキャンセル処理の完了(成功)を意味するものではありません。