カーソル

カーソルは、行のセットに含まれる 1 つ以上の行を指示するメカニズムです。 この行は、表から、またはストアード・プロシージャーから返された結果セットから、取得されます。 アプリケーション・プログラムは、カーソルを使用して表から行を取り出すことができます。

このタスクについて

ブロック・フェッチ操作で使用される、カーソル固定の指定でバインドされているカーソルは、 すでに変更済みのデータの読み取りに対して、特にぜい弱な面があります。 ブロック・フェッチでは、データベースのアクセスが、アプリケーションが制御する行の取り出しより先行して、 行をプリフェッチします。 その間に、カーソルがクローズし、ロックが解放された後で、そのアプリケーションがデータを受け取る 場合があります。 そのために、アプリケーションは、すでに存在していない値の行をフェッチしたり、 最近に挿入された行を見落とすといったことが起こります。 多くの場合、これは許容されますが、これが許容されない場合を、 データの現行性 が必要であるといいます。

ご使用のアプリケーションがカーソルに関してデータの現行性を必要と する場合は、カーソルが指しているデータに対するブロック・フェッチを防止する必要があります。 分散カーソルの場合にブロック・フェッチを防止するには、そのカーソルを FOR UPDATE 文節を使用して宣言してください。