ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OraDynasetオブジェクト

説明

OraDynasetオブジェクトは、SQL SELECT文から作成されたデータの参照と更新を許可します。

備考

OraDynasetオブジェクトは、SQL SELECT問合せの結果セットまたはストアド・プロシージャやファンクションから戻ったPL/SQLカーソル変数を表します。これは本来、クライアント側でスクロールおよび更新できるカーソルで、実行した問合せで生成された行セットを参照できます。これは、OraDatabaseインタフェースのCreateDynasetメソッドまたはCreateCustomDynasetメソッドで作成されます。OraDynasetオブジェクトを使用して、VARRAY、ネストした表、ObjectREF、LOB、BFILE型など、リレーショナル列およびオブジェクト・リレーショナル列のインスタンスが含まれる結果セットをスクロールできます。

このオブジェクトは、更新などのデータベース操作を透過的にミラー化します。Updateメソッドを介してデータが更新されると、問合せのローカル・ミラー・イメージが更新されるため、問合せを再評価せずにデータが変更されたかのように見えます。レコードをダイナセットに追加するときにも、同じプロシージャが自動的に使用されます。ミラー化したデータのイメージがOracle Database上の実際のデータと一致していることを確認するために、整合性チェックが実行されます。整合性チェックが実行されるのは、必要な場合(更新の直前など)のみです。

作成およびリフレッシュ操作時に、OraDynasetオブジェクトは、パラメータ名をSQL文のプレースホルダとして使用して、指定されたSQL文に関連する使用可能な入力パラメータをすべて自動的にバインドします。この結果、問合せの動的構築が簡素化され、同じSQL文でWHERE句が異なるような複数の問合せの効率が向上します。

Oracle Objects for OLEを使用する場合、Editメソッドを実行するまで、データにはロックが設定されません。Editメソッドは、"SELECT ... FOR UPDATE"文を使用してダイナセットのカレント・レコードに対するロックを取得しようとします。このロックは、レコードに対するロック設定時間を最短にするように、できるかぎり後に行われます。Editメソッドは、次の理由で失敗する可能性があります。

  • SQLの問合せがOracle SQLの更新規則に違反している(たとえば、計算済の列や表の結合を使用した場合)。

  • ロックの取得に必要な権限がユーザーにない。

  • 他のユーザーがそのレコードをすでにロックしている。OpenDatabaseメソッドには、ロックを待機するかどうかを決定できるオプションがあります。