日本語PDF

13.46 OPEN FOR文

OPEN FOR文は、カーソル変数を問合せに関連付け、問合せを処理するデータベース・リソースを割り当て、結果セットを識別して、カーソルを結果セットの最初の行の前に配置します。

問合せにFOR UPDATE句がある場合、結果セットの行はOPEN FOR文によってロックされます。

ここでのトピック

構文

open_for_statement ::=

using_clause ::=

セマンティクス

open_for_statement

cursor_variable

カーソル変数の名前。cursor_variableがサブプログラムの仮パラメータの場合、戻り型は指定しないでください。サブプログラム・パラメータとしてのカーソル変数の詳細は、「サブプログラム・パラメータとしてのカーソル変数」を参照してください。

:host_cursor_variable

PL/SQLホスト環境で宣言され、バインド変数としてPL/SQLに渡されるカーソル変数の名前。コロン(:)とhost_cursor_variableの間に空白は入れないでください。

ホスト・カーソル変数のデータ型は、PL/SQLカーソル変数の戻り型と互換性があります。

select_statement

SQLのSELECT文(PL/SQLのSELECT INTO文ではない)。通常、select_statementは複数の行を戻します。

参照:

SELECT文の構文は、『Oracle Database SQL言語リファレンス』を参照してください。

dynamic_string

データ型がCHARVARCHAR2またはCLOBで、SQLのSELECT文を表す文字列リテラル、文字列変数または文字列式。通常、dynamic_statementは複数の行を戻すSQLのSELECT文を表します。

using_clause

位置表記法を使用して、バインド変数を指定します。

ノート:

dynamic_sql_statement内でプレースホルダ名を繰り返す場合は、プレースホルダをバインド変数に関連付ける方法が動的SQL文の種類によって異なるということに注意してください。詳細は、「動的SQL文内でのプレースホルダ名の繰返し」を参照してください。

using_clauseの制限

select_statementまたはdynamic_sql_stmtにバインド変数のためのプレースホルダがある場合にのみ使用します。

IN、OUT、IN OUT

バインド変数のパラメータ・モード。INバインド変数は、その値をselect_statementまたはdynamic_stringに渡します。OUTバインド変数は、dynamic_stringによって戻される値を格納します。IN OUTバインド変数は、その初期値をdynamic_stringに渡し、dynamic_stringによって戻される値を格納します。デフォルト: IN

bind_argument

実行時に、select_statementまたはdynamic_stringに含まれる対応するプレースホルダを置換する値を持つ式。すべてのプレースホルダにbind_argumentを指定する必要があります。

ノート:

バインド変数はどのような順序でも評価できます。プログラムにより評価の順序が決定される場合は、プログラムで決定が行われる時点で動作は定義されません。

bind_argumentの制限

  • bind_argumentに、文字列で索引付けされている連想配列は使用できません。

  • bind_argumentに、予約語NULLは使用できません。

    NULLを動的SQL文に渡すには、例7-7で示すように、NULLを使用する場所に未初期化変数を使用します。

  • 例6-26カーソル変数によるデータのフェッチ

  • 例6-30静的SQLを使用したコレクションの問合せ

  • 例6-311つの問合せ用にカーソル変数をオープンするプロシージャ

  • 例6-32選択された問合せ用のカーソル変数のオープン(同じ戻り型)

  • 例6-33選択された問合せ用のカーソル変数のオープン(異なる戻り型)

  • 例7-8OPEN FOR文、FETCH文およびCLOSE文を使用したシステム固有の動的SQL

  • 例7-9システム固有の動的SQLを使用したコレクションの問合せ