日本語PDF

13.30 明示カーソルの宣言および定義

明示カーソルは、特定の問合せまたはDML文(通常は、複数の行を戻すか複数の行に影響を与える文)の処理に関する情報を格納しておくSQLのプライベート領域を指す名前付きのポインタです。

明示カーソルを使用すると、結果セットの行を一度に1行ずつ取り出すことができます。

明示カーソルは、使用する前に宣言および定義する必要があります。最初に宣言して(cursor_declarationを使用)、後で同じブロック、サブプログラムまたはパッケージ内で定義する(cursor_definitionを使用)か、または宣言と定義を同時に行う(cursor_definitionを使用)ことができます。

明示カーソルの宣言および定義は、それぞれカーソル仕様部およびカーソル本体とも呼ばれます。

ノート:

パッケージ仕様部で宣言された明示カーソルは、パッケージのAUTHID句の影響を受けます。詳細は、「CREATE PACKAGE文」を参照してください。

ここでのトピック

構文

cursor_declaration ::=

cursor_definition ::=

cursor_parameter_dec ::=

セマンティクス

cursor_declaration

cursor

ここで宣言し、後で同じブロック、サブプログラムまたはパッケージ内で定義する明示カーソルの名前。cursorは、予約語のSQLを除く任意の識別子にできます。カーソルにはデータベース表と同じ名前を付けないことをお薦めします。

明示カーソル名は、変数と同じ有効範囲規則に従います(「識別子の有効範囲と可視性」を参照)。

cursor_definition

すでに宣言済の明示カーソルを定義するか、または明示カーソルの宣言と定義の両方を行います。

cursor

ここで定義を行う事前宣言済の明示カーソルの名前、または宣言と定義の両方を行う明示カーソルの名前(cursorは、予約語のSQLを除く任意の識別子にできます)。カーソルにはデータベース表と同じ名前を付けないことをお薦めします。

select_statement

SQLのSELECT文(PL/SQLのSELECT INTO文ではない)。カーソルに仮パラメータが含まれている場合は、各パラメータをselect_statementで使用する必要があります。select_statementは、有効範囲内の他のPL/SQL変数を参照することもできます。

select_statementの制限

このselect_statementWITH句を持たせることはできません。

参照:

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

cursor_parameter_dec

カーソル・パラメータの宣言。

parameter

宣言する仮カーソル・パラメータの名前。select_statementでは、定数を使用できる場所であればどこでもこの名前を使用できます。

IN

INを指定するかどうかに関係なく、仮カーソル・パラメータはINサブプログラム・パラメータの特性(詳細は表8-1を参照)を持ちます。カーソルをオープンすると、仮パラメータの値は実パラメータの値またはデフォルト値のいずれかになります。

datatype

パラメータのデータ型。

datatypeの制限

このdatatypeには制約(NOT NULL、数値の精度と位取り、文字列の長さなど)を持たせることはできません。

expression

仮カーソル・パラメータのデフォルト値を指定します。expressionと仮カーソル・パラメータのデータ型には、互換性がある必要があります。

仮カーソル・パラメータに対応する実パラメータをOPEN文で指定しない場合は、expressionが評価され、その値が仮カーソル・パラメータに代入されます。

仮カーソル・パラメータに対応する実パラメータをOPEN文で指定すると、実パラメータの値が仮カーソル・パラメータに代入され、expressionは評価されません。

rowtype

カーソルが戻す行のデータ型。この行の列は、select_statementが戻す行の列と一致している必要があります。

db_table_or_view

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

cursor

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

cursor_variable

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

record

事前に宣言されているレコード変数の名前。

record_type

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

  • 例6-5明示カーソルの宣言および定義

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

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

  • 例6-10仮想列に別名が必要な明示カーソル

  • 例6-11パラメータを受け入れる明示カーソル

  • 例6-12デフォルト値を持つカーソル・パラメータ

  • 例6-13既存のカーソルへの仮パラメータの追加

  • 例6-22親問合せのFROM句内の副問合せ

  • 例6-23相関副問合せ

  • 例6-35CURSOR式

  • 例6-41COMMIT文の後でのFOR UPDATEカーソルによるフェッチ