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は排他待ちの状態になります。
-
表
-
ビュー
-
ストアドプロシジャ
-
ストアドファンクション
-