Cosminexus V9 アプリケーションサーバ 機能解説 互換編
setHiRDBCursorModeメソッド
説明
HiRDBで検索時にカーソルが複数のCommitにわたって有効かどうかを設定します。このメソッドが呼び出されない場合は,falseが設定されます。
なお,この機能を使用する場合,マニュアル「HiRDB SQLリファレンス」のDECLARE CURSOR(カーソル宣言)形式1を参照してください。
形式
public void setHiRDBCursorMode(boolean Mode);
パラメタ
- Mode:
- HiRDBで検索時にカーソルが複数のCommitにわたって有効かどうかを次の値で設定します。
- true
カーソルは保持されます。アプリケーションは続けてFetchできます(LOCK TABLE UNTIL DISCONNECTが前提です)。
- false
カーソルはクローズされますが,ステートメントは有効です。アプリケーションは,Prepareしないで,再度Executeできます。
例外
戻り値
注意事項
- 接続データベースがHiRDB以外の場合,指定値は無視されます。
- ORACLEでは,常にカーソルは複数のCommit,またはRollbackにわたって有効です。
- SELECT,INSERT,DELETE,UPDATE,PURGEおよびCALLのどれかでアクセスする次のスキーマ資源に対して,ほかのユーザが定義系SQL文を発行すると,スキーマ資源にアクセスしていたコネクションをDISCONNECTするまでの間,定義系SQLは排他待ちの状態になります。
- 表
- ビュー
- ストアドプロシジャ
- ストアドファンクション
- 抽象データ型
- XADataSourceを使用して,バージョンが07-01より前のHiRDBに接続した場合,trueにしても有効になりません。
trueを設定する場合の注意事項
- MetaDataを取得する場合,trueを指定してLOCK TABLE UNTIL DISCONNECTをしないで,複数のCommitにわたってFetchをするとエラーが発生します。MetaDataを取得する場合は,trueを設定しないでください。
- 接続データベースがHiRDBの場合でかつ,検索SQL(SELECT文)に「UNTIL DISCONNECT」を記述した場合は,必ず接続時のプロパティまたはURLにHIRDB_CURSOR=trueを設定するか,このメソッドでtrueを設定してください。これらの設定をしなかった場合,Commitをわたった検索中のResultSetクラスオブジェクトに対してcloseメソッドを実行してもカーソルをクローズしません。
- 次の表にはアクセスできません。アクセスした場合,HiRDBのエラーになります。
- 分散表
- ディクショナリ表
- 抽象データ型を含む表
- 外部表,または外部表を基表とするビュー表
- 関数呼び出しを指定して導出した名前付きの導出表(ビュー表,WITH句の問い合わせ)
- カーソルをオープンする前に,そのカーソルを使用する表に対してUNTIL DISCONNECT指定のLOCK TABLE文を実行しておく必要があります。
- ROLLBACKを発行すると,使用しているカーソルはすべて閉じられます。
- 排他オプションにWITHOUT LOCK WAIT,またはWITHOUT LOCK NOWAITを指定できません。また,クライアント環境変数でデータ保証レベル(PDISLLVL)に0,または1を指定した場合でも2(WITH SHARE LOCK相当)を仮定します。
- カーソルがオープンしている場合,同じコネクションで定義系SQLは実行できません。また,カーソルがクローズしている場合,同じコネクションで定義系SQLを実行するとSQLの前処理は無効になります。
- SELECT文を実行し,そのSELECT文中で使用している表に対してPURGE TABLE文を実行すると,カーソルはクローズされます。
- オープンしているカーソルで指定した表を,同じコネクションの別のステートメントでオープンすることはできません。
- 次のオペランドを指定する場合は,LOCK文にIN EXCLUSIVE MODEを指定してください。
- WITH EXCLUSIVE LOCK
- FOR UPDATE句
falseを設定する場合の注意事項
- 通常,Fetch時,DABroker LibraryにFetchデータをバッファリングするため,Commit直後のFetchでエラーが発生するとは限りません。
- MetaDataを取得する場合,falseまたはデフォルトの状態でResultSetのFetch実行中に,Commitを実行するとエラーが発生します。
- SELECT,INSERT,DELETE,UPDATE,PURGEおよびCALLのどれかでアクセスする次のスキーマ資源に対して,ほかのユーザが定義系SQL文を発行すると,スキーマ資源にアクセスしていたコネクションをDISCONNECTするまでの間,定義系SQLは排他待ちの状態になります。
- 表
- ビュー
- ストアドプロシジャ
- ストアドファンクション
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.