Plsql-variable-types
PL/SQL-変数
この章では、Pl/SQLの変数について説明します。 変数は、プログラムが操作できるストレージ領域に付けられた名前に他なりません。 PL/SQLの各変数には、変数のメモリーのサイズとレイアウトを決定する特定のデータ型があります。そのメモリ内に保存できる値の範囲と、変数に適用できる一連の操作。
PL/SQL変数の名前は、オプションでさらに文字、数字、ドル記号、アンダースコア、シャープ記号が続く文字で構成され、30文字を超えてはなりません。 デフォルトでは、変数名は大文字と小文字が区別されません。 予約されたPL/SQLキーワードを変数名として使用することはできません。
PL/SQLプログラミング言語では、日時データ型、レコード、コレクションなど、さまざまなタイプの変数を定義できます。 これについては、以降の章で説明します。 この章では、基本的な変数タイプのみを学習します。
PL/SQLでの変数宣言
PL/SQL変数は、宣言セクションまたはパッケージでグローバル変数として宣言する必要があります。 変数を宣言すると、PL/SQLは変数の値にメモリーを割り当て、ストレージの場所は変数名で識別されます。
変数を宣言するための構文は-
ここで、_variable_name_はPL/SQLの有効な識別子であり、_datatype_は有効なPL/SQLデータ型、または前の章ですでに説明したユーザー定義のデータ型でなければなりません。 有効な変数宣言とその定義を以下に示します-
データ型にサイズ、スケール、または精度の制限を指定すると、それは*制約付き宣言*と呼ばれます。 制約付き宣言は、制約なし宣言よりも少ないメモリで済みます。 たとえば-
PL/SQLでの変数の初期化
変数を宣言するたびに、PL/SQLはその変数にデフォルト値のNULLを割り当てます。 あなたがNULL値以外の値で変数を初期化する場合は、次のいずれかを使用して、宣言中に行うことができます-
- DEFAULT キーワード
- assignment 演算子
たとえば-
そうでない場合は、変数を適切に初期化することをお勧めします。プログラムによっては、予期しない結果が生じる場合があります。 さまざまなタイプの変数を利用する次の例を試してください-
上記のコードが実行されると、次の結果が生成されます-
PL/SQLの変数スコープ
PL/SQLでは、ブロックをネストできます。つまり、各プログラムブロックに別の内部ブロックを含めることができます。 変数が内部ブロック内で宣言されている場合、外部ブロックからはアクセスできません。 ただし、変数が宣言され、外部ブロックからアクセスできる場合、ネストされたすべての内部ブロックからもアクセスできます。 変数スコープには2種類あります-
- ローカル変数-内部ブロックで宣言され、外部ブロックからアクセスできない変数。
- グローバル変数-最も外側のブロックまたはパッケージで宣言された変数。
次の例は、単純な形式で Local および Global 変数の使用法を示しています-
上記のコードが実行されると、次の結果が生成されます-
SQLクエリ結果のPL/SQL変数への割り当て
SQLの SELECT INTO ステートメントを使用して、値をPL/SQL変数に割り当てることができます。 * SELECTリスト*の各アイテムについて、* INTOリスト*に対応するタイプ互換の変数が必要です。 次の例は、概念を示しています。 CUSTOMERSという名前のテーブルを作成しましょう-
( SQLステートメントについては、リンクを参照してください:/sql/index [SQLチュートリアル] )
テーブルにいくつかの値を挿入しましょう-
次のプログラムは、SQLの* SELECT INTO句*を使用して、上記の表の値をPL/SQL変数に割り当てます-
上記のコードが実行されると、次の結果が生成されます-