ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

OPEN-FOR文

OPEN-FOR文は、カーソル変数に関連付けられているSELECT文を実行します。 また、文の処理に使用するデータベース・リソースを割り当て、結果セット(条件を満たす行)を識別して、カーソル変数を結果セットの最初の行の前に配置します。

オプションのUSING句を指定すると、OPEN-FOR文は、複数の行を戻す動的SELECT文を処理します。つまり、カーソル変数をSELECT文と関連付け、文を実行し、結果セットを識別して、カーソルを結果セットの最初の行の前に配置してから、%ROWCOUNTによって保持される処理行カウントを0(ゼロ)に設定します。

構文

open_for_statement ::=

open_for_statement
open_for_statement.gifの説明

using_clause ::=

using_clause
using_clause.gifの説明

キーワードとパラメータの説明

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型である必要があります。

USING

この句は、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モードを指定する必要があります。 この指定によって、サブプログラムはコール元にオープン・カーソルを渡すことができます。

関連トピック