8.4.41 setQueryTimeout(int seconds)
(1) 機能
SQL処理のタイムアウト時間を設定します。
(2) 形式
public synchronized void setQueryTimeout(int seconds) throws SQLException
(3) 引数
- int seconds:
-
SQL処理のタイムアウト時間(単位:秒)を0〜65,535の範囲で指定します。
0を指定した場合,またはこのメソッドを実行しない場合は,システムプロパティ,ユーザプロパティ,または接続用のURLのプロパティのadb_clt_rpc_sql_wait_timeの設定値が有効になります。
このメソッドを実行すると,次に示す2つの待ち時間が監視対象になります。
-
HADBクライアントからHADBサーバに処理要求をしてから,応答が戻ってくるまでの待ち時間
上記の待ち時間を超えた場合,SQLCODEが-732(KFAA30732-E)のタイムアウトエラーがAPに返されます。このとき,SQL文の処理はキャンセルされ,トランザクションはロールバックされます。そのあと,HADBサーバからAPが切り離されます。
-
同一コネクションで複数のSELECT文を同時実行した際に,処理リアルスレッド数不足が発生したときの,処理リアルスレッドを確保できるまでの待ち時間
上記の待ち時間を超えた場合,SQLCODEが-1071570(KFAA71570-E)のタイムアウトエラーがAPに返されます。このとき,SQL文の処理はキャンセルされますが,トランザクションはロールバックされません。また,APはHADBサーバから切り離されません。
このメソッドによる待ち時間の監視の目的については,「7.4.1 データの検索方法」の「(4) 同一コネクションで複数のSELECT文を同時実行する際の注意事項」を参照してください。
-
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合にSQLExceptionが投入されます。
-
Statementオブジェクトがクローズされている場合
-
Statementオブジェクトを生成したConnectionオブジェクトがクローズされている場合
-
secondsに0未満の値を指定した場合
(6) 留意事項
secondsに65,536(プロパティのadb_clt_rpc_sql_wait_timeの最大値)以上の値を指定した場合,このメソッドの指定値は無視されます。