>>-FOR----+-READ--+--ONLY-------------------------------------->< '-FETCH-'
FOR READ ONLY 文節は、結果表が読み取り専用であり、 カーソルを定位置 UPDATE ステートメントおよび定位置 DELETE ステートメントで参照できないことを指定します。 FOR FETCH ONLY も同じ意味です。
結果表の中には、最初から読み取り専用のものがあります。 (読み取り専用視点に基づく表など。) FOR READ ONLY は、このような表にも指定できますが、指定しても効果はありません。
更新と削除ができない結果表の場合、FOR READ ONLY (または FOR FETCH ONLY) を指定すると、 データベース・マネージャーが、ブロック化を行い、排他ロックを回避することができるため、 FETCH 操作のパフォーマンスが向上する可能性があります。 たとえば、FOR READ ONLY 文節または ORDER BY 文節のない動的 SQL ステートメントを含むプログラムでは、 FOR UPDATE 文節が指定されたかのようにして、 データベース・マネージャーがカーソルをオープンする場合があります。 したがって、定位置 UPDATE または DELETE ステートメントで照会を使用する場合以外は、 パフォーマンスを向上させるために FOR READ ONLY 文節を使用するようにしてください。
読み取り専用結果表は、それが最初から読み取り専用であるか、 それとも FOR READ ONLY (FOR FETCH ONLY) として指定されたのかには関係なく、 定位置 UPDATE または DELETE ステートメントで参照することはできません。 読み取り専用カーソルと更新可能カーソルについては、 DECLARE CURSOR を参照してください。