OPEN-FOR
文は、カーソル変数に関連付けられているSELECT
文を実行します。 また、文の処理に使用するデータベース・リソースを割り当て、結果セット(条件を満たす行)を識別して、カーソル変数を結果セットの最初の行の前に配置します。
オプションのUSING
句を指定すると、OPEN-FOR
文は、複数の行を戻す動的SELECT
文を処理します。つまり、カーソル変数をSELECT
文と関連付け、文を実行し、結果セットを識別して、カーソルを結果セットの最初の行の前に配置してから、%ROWCOUNT
によって保持される処理行カウントを0(ゼロ)に設定します。
構文
open_for_statement ::=
using_clause ::=
キーワードとパラメータの説明
cursor_variable_name
現行の有効範囲のうちそれより前に宣言されているカーソル変数またはパラメータ(戻り型を持たない)です。
host_cursor_variable_name
PL/SQLホスト環境で宣言して、バインド引数として(コロン(:)接頭辞を付けて)PL/SQLに渡す必要があるカーソル変数。 カーソル変数のデータ型は、PL/SQLカーソル変数の戻り型と互換性があります。
select_statement
cursor_variable_name
に関連付けられた複数行のSELECT
文(最後のセミコロンなし)を表す文字列リテラル、文字列変数または文字列式。 NCHAR
型またはNVARCHAR2
型ではなく、CHAR
型、VARCHAR2
型またはCLOB
型である必要があります。
dynamic_string
SQL文を表す1つの文字列リテラル、文字列変数または文字列式です。 CHAR
型、VARCHAR2
型またはCLOB
型である必要があります。
この句は、select_statment
にプレースホルダが含まれる場合にのみ使用され、バインド引数のリストを指定します。
bind_argument
値が動的SQL文に渡される式(インバインド)か、または値が動的SQL文に戻される変数(アウトバインド)が格納されます。 bind_argument
のデフォルト・パラメータ・モードはIN
です。
使用上の注意
OCIやPro*CプログラムなどのPL/SQLホスト環境で、カーソル変数を宣言できます。 ホスト・カーソル変数をオープンするには、バインド引数として無名PL/SQLブロックに渡します。 OPEN-FOR
文をグループにまとめることで、ネットワークの通信量を削減できます。 たとえば、次のPL/SQLブロックは、1回の往復で5つのカーソル変数をオープンしています。
/* anonymous PL/SQL block in host environment */ BEGIN OPEN :emp_cv FOR SELECT * FROM employees; OPEN :dept_cv FOR SELECT * FROM departments; OPEN :grade_cv FOR SELECT * FROM salgrade; OPEN :pay_cv FOR SELECT * FROM payroll; OPEN :ins_cv FOR SELECT * FROM insurance END;
その他のOPEN-FOR
文は、異なる複数の問合せ用に同じカーソル変数をオープンできます。 カーソル変数を再オープンする場合、その前にクローズする必要はありません。 別の問合せ用にカーソル変数を再オープンすると、前の問合せは失われます。
カーソルとは異なり、カーソル変数はパラメータを取りません。 かわりに、カーソル変数にはパラメータのみでなく問合せ全体を渡すことができます。 カーソル変数は、PL/SQLストアド・サブプログラムによってオープンして、コール元のサブプログラムに戻すことができますが、コール元とコール先のサブプログラムは同じインスタンス上に存在する必要があります。 データベース・リンクを介してコールされたプロシージャおよびファンクションに、カーソル変数を渡したり、戻すことはできません。 カーソル変数を、そのカーソル変数をオープンするサブプログラムの仮パラメータとして宣言する場合は、IN
OUT
モードを指定する必要があります。 この指定によって、サブプログラムはコール元にオープン・カーソルを渡すことができます。
関連トピック