OPEN
文は、カーソルに関連付けられた問合せを実行します。 また、問合せの処理に使用するデータベース・リソースを割り当て、結果セット(問合せの条件に一致する行)を識別します。 カーソルは、結果セットの最初の行の前に置かれます。
構文
open_statement ::=
キーワードとパラメータの説明
cursor_name
現行の有効範囲のうちそれより前に宣言されていて、現在オープンされていない明示カーソルです。
cursor_parameter_name
カーソルの仮パラメータとして宣言された変数を識別します。 (cursor_parameter_declaration
の構文は、「明示カーソル」を参照。) カーソルのパラメータは、問合せの中で定数が使用できる場所であれば、どこででも使用できます。
使用上の注意
一般に、PL/SQLによる明示カーソルは、それを最初にオープンするときにのみ解析されます。また、SQL文の解析(およびそれによる暗黙カーソルの作成)は、その文が初めて実行されるときにのみ行われます。 解析されたSQL文は、すべてキャッシュに入れられます。 SQL文は、新しいSQL文によってキャッシュからエージ・アウトされた場合にのみ再解析されます。 したがって、カーソルを再オープンするには、まずクローズする必要がありますが、PL/SQLはカーソルに関連付けられたSELECT
文を再解析する必要はありません。 カーソルをクローズしてからただちに再オープンした場合、再解析は不要です。
結果セットの中の行は、OPEN
文の実行時には取り出されません。 行の取出しにはFETCH
文を使用します。 FOR
UPDATE
カーソルでは、カーソルがオープンされるときに、行はロックされます。
仮パラメータが宣言されている場合は、カーソルに実パラメータを渡す必要があります。 カーソルの仮パラメータはIN
パラメータにする必要があるため、実パラメータに値を戻すことはできません。 実パラメータの値はカーソルをオープンする場合に使用されます。 仮パラメータと実パラメータのデータ型には、互換性が必要です。 問合せでは、有効範囲の中で宣言されている他のPL/SQL変数を参照することもできます。
デフォルト値を受け入れるのでなければ、カーソル宣言の中の仮パラメータは、すべてOPEN
文の中で対応する実パラメータを持つ必要があります。 デフォルト値で宣言された仮パラメータには、対応する実パラメータがなくてもかまいません。 このような仮パラメータは、OPEN
文の実行時にデフォルト値を取ります。
位置表記法または名前表記法を使用して、OPEN
文の実パラメータを、カーソル宣言の仮パラメータに関連付けることができます。
カーソルがオープンされている場合は、そのカーソルの名前をカーソルFOR
ループで使用できません。
関連トピック