13.18 カーソル変数の宣言

カーソル変数は、1つの問合せに限定されない明示カーソルと似ています。

カーソル変数を作成するには、事前定義のSYS_REFCURSOR型の変数を宣言するか、REF CURSOR型を定義してからその型の変数を宣言します。

カーソル変数の制限

  • カーソルFOR LOOP文の中ではカーソル変数を使用できません。

  • カーソル変数は、パッケージ仕様部では宣言できません。

    つまり、パッケージにはパブリック・カーソル変数(パッケージの外から参照できるカーソル変数)を含めることはできません。

  • カーソル変数の値をコレクションまたはデータベース列に格納することはできません。

  • 比較演算子を使用して、カーソル変数が等しいかどうか、またはNULLかどうかをテストできません。

  • サーバー間リモート・プロシージャ・コール(RPC)でカーソル変数を使用するとエラーが発生します。ただし、リモート・データベースがプロシージャ・ゲートウェイを介してアクセスされるOracle以外のデータベースである場合は、サーバー間RPCでカーソル変数を使用できます。

ここでのトピック

構文

ref_cursor_type_definition ::=

cursor_variable_declaration ::=

セマンティクス

ref_cursor_type_definition

type

定義するREF CURSOR型の名前。

RETURN

カーソル変数が戻す値のデータ型を指定します。

強いREF CURSOR型を定義する場合はRETURNを指定します。弱いREF CURSOR型を定義する場合はRETURNを省略します。REF CURSORの強い型と弱い型の詳細は、「カーソル変数の作成」を参照してください。

db_table_or_view

宣言が処理されるときにアクセスできる必要があるデータベースの表またはビューの名前。

cursor

事前に宣言されている明示カーソルの名前。

cursor_variable

事前に宣言されているカーソル変数の名前。

record

ユーザー定義のレコードの名前。

record_type

データ型指定子RECORDを使用して定義されたユーザー定義型の名前。

ref_cursor_type

データ型指定子REF CURSORを使用して定義されたユーザー定義型の名前。

cursor_variable_declaration

cursor_variable

宣言するカーソル変数の名前。

type

宣言するカーソル変数の型(SYS_REFCURSOR、または事前に定義したREF CURSOR型の名前)。

SYS_REFCURSORは弱い型です。REF CURSORの強い型と弱い型の詳細は、「カーソル変数の作成」を参照してください。

  • 例6-24カーソル変数の宣言

  • 例6-25ユーザー定義の戻り型を持つカーソル変数

  • 例6-28カーソル変数問合せの変数(結果セットの変更なし)

  • 例6-29カーソル変数問合せの変数(結果セットの変更あり)

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

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

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

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

  • 例6-34Pro*Cクライアント・プログラムにおけるホスト変数としてのカーソル変数