18.2.5 実行中のSQLをキャンセルする場合
実行中のSQLをa_rdb_SQLCancel()でキャンセルできます。キャンセルできるSQL(CLI関数)を次に示します。
-
a_rdb_SQLCloseCursor()
-
a_rdb_SQLExecDirect()
-
a_rdb_SQLExecute()
-
a_rdb_SQLFetch()
-
a_rdb_SQLPrepare()
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()の正常終了はキャンセル処理の完了(成功)を意味するものではありません。