PL/SQL-Lesson3
★★★ Lesson 3 ★★★
PL/SQL-Oracle 入門
PL/SQL
変数と定数の宣言
変数には、数値でも文字列でも日付でも好きな値を覚えさせておき、好きな時にその値を引き出すことができます。そして、その内容をいつでも書き換えることができます。また、変数はいくつも作ることができるので、扱いやすいように名前を付けて区別できるようにしておきます。
定数は、値を記憶していつでも取り出せるという点は変数と同じですが、その内容を書き換えることはできません。定数は、プログラムのなかで何度も登場し、ごくまれにしか変わらない値に使うと便利です。定数を利用するメリットは、プログラムのメンテナンス性を向上し、余計なバグを防ぐことにあります。
変数や定数を使うには、まず「変数や定数を使いますよ」と宣言します。しかし、、プログラム言語によって、その宣言方法は様々です。
PL/SQLプログラムの構造
PL/SQLの場合は、「宣言部」と呼ばれる部分で変数や定数の宣言をまとめて行います。
この方法には次のメリットもあるのです。どのような変数がプログラム内で使われているのかが一目瞭然で、変数の命名ルールを守っているかの確認も容易ですし、使われていないと思って同じ名前を宣言する心配がなくなります。業務要件の変更で変数の宣言を見直す場合も、どこを見直せばよいのか判別しやすく、ミスを防ぐのに効果的です。とにかく、PL/SQLで変数や定数を宣言するためには、「宣言部」について理解しなければなりません。
PL/SQLのプログラムは、その役割に応じて大きく3つの「部」に区分けできます。「BEGIN」で始まり「END;」で終わる部分は、プログラムの処理そのものを記述する部分で、「実行部」と呼ばれます。PL/SQLのプログラムには、実行部が必要です。
「宣言部」は、実行部の前に「DECLARE」というキーワードを書いて作ります。「DECLARE」から「BEGIN」までの間が「宣言部」、と理解すればよいです。
そして、最後の一つの部は「例外処理部」です。例外処理部は、実行部に書かれた命令の実行時に発生したエラーへの対処、すなわちエラー処理を記述するために使います。例外処理部を作るためのキーワードは「EXCEPTION」で、これは「END;」の前に記述します。例外処理部を作る場合は「BEGIN」から「EXCEPTION」までが実行部となり、「EXCEPTION」から「END;」までが例外処理部となります。

変数を宣言する方法
それでは、宣言部で変数を宣言する方法を紹介します。■書式
変数の名前 データ型 := 初期値 [NOT NULL];
これが変数を宣言するための構文です。すでに説明したとおり、変数には名前が必要なので、変数の名前を最初に記述します。
次に、変数に入れる値に応じてデータの型を一つ選んで記述します。これは、データベースの列を作成するときに、その列に格納するデータの型を決めるのと同じです。
■例:
a VARCHAR2(10);
※文の最後の「;」(セミコロン)を忘れないようにしてください。これを忘れると、コンパイルエラーになります。
PL/SQLで使えるデータ型
PL/SQLで使えるデータ型の一覧を下表に示します。種別 | データ型名 | 格納できる値 | 値の範囲や最大精度及び補足事項 |
---|---|---|---|
数値 | PLS_INTEGER | 符号付き整数 | |
BINARY_INTEGER (*1) | |||
BINARY_FLOAT | 単精度の浮動小数点 | ||
BINARY_DOUBLE | 倍精度の浮動小数点 | ||
NUMBER | 固定小数点または浮動小数点 | ||
INT (*1) | 整数 | 精度の最大値は10進数の38桁 | |
INTEGER (*1) | |||
SMALLINT (*1) | |||
DEC (*1) | 固定小数点 | ||
DECIMAL (*1) | |||
NUMERIC (*1) | |||
DOUBLE PRECISION (*1) | 浮動小数点 | 精度の最大値は2進数の126桁 | |
FLOAT (*1) | |||
REAL (*1) | 精度の最大値は2進数の63桁 | ||
文字/文字列 | CHAR | 固定長の文字 | |
CHARACTER (*2) | |||
LONG (*3) | 可変長の文字 | ||
LONG RAW (*4) | バイナリデータやバイト列 | ||
RAW | |||
ROWID (*5) | 物理ROWID | ||
UROWID | 物理ROWID/論理ROWID/非Oracle ROWID | ||
VARCHAR2 | 可変長の文字 | ||
STRING (*5) | |||
VARCHAR (*6) | |||
文字/文字列 | NCHAR | 固定長の文字 | |
NVARCHAR2 | 可変長の文字 | ||
BFILE | OS上のファイルへのバイナリデータ | システムによるが、4GBは超えられない | |
LOB(ラージオブジェクト) | BLOB | データベース内へのバイナリデータ | 最大8~128TB |
CLOB | 文字データの大規模なブロック | ||
NCLOB | NCHARデータの大規模なブロック | ||
ブール型 | BOOLEAN | ブール値(TRUEとFALSE)及びNULL | |
日付、時刻、時間隔 | DATE | 固定長の日時 | 紀元前4712年1月1日から西歴9999年12月31日 |
TIMESTAMP | |||
TIMESTAMP WITH TIMEZONE | |||
TIMESTAMP WITH LOCAL TIMEZONE | |||
INTERVAL YEAR TO MONTH | 年及び月の時間隔 | ||
INTERVAL DAY TO SECOND | 日、時、分及び秒の時間隔 |
(*1) NUMBERのサブタイプ
(*2) CHARのサブタイプ
(*3) 下位互換性のために用意。新規のアプリケーションではCLOBまたはNLOBを使用
(*4) 下位互換性のために用意。新規のアプリケーションではBLOBまたはBFILEを使用
(*5) 下位互換性のために用意。新規のアプリケーションではUROWIDを使用
(*6) VARCHAR2のサブタイプ
変数に初期値を設定
初期値を指定する場合は、データ型の後ろに「:=」(コロンとイコール)を記述し、格納しておく値を続けて記述します。上記の例で取り上げたAという変数に初期値として「DEKIRUNEKO」と入れておきたいのであれば、次のようにします。
a VARCHAR2(10) := ‘DEKIRUNEKO’;
この場合も文の最後に「;」(セミコロン)を付けます。
さらに、変数の値を空っぽ、つまりNULLにすることを禁じる方法もあります。初期値に続いて「NOT NULL」と書くだけです。
a VARCHAR2(10) := ‘DEKIRUNEKO’ NOT NULL;
このように宣言すれば、変数には必ず意味のある値が入っていなければならないということになります。
変数は、一つのプログラムに対していくつ宣言しても構いません。
しかし、一つの文で宣言できる変数は一つだけと決まっています。面倒でも、一つずつ宣言するようにしてください。
定数を宣言する方法
それでは、宣言部で定数を宣言する方法を紹介します。■書式
定数の名前 CONSTANT データ型 := 値;
これが定数を宣言するための構文です。変数と異なっているのは、定数の名前とデータ型の間にキーワード「CONSTANT」が入っている点です。
定数は、最初に決められた値を入れて置き、それを書き換えることができないと説明しました。したがって、宣言する時点で必ず値を入れておかなくてはなりません。
■例:
a CONSTANT VARCHAR2(10) := ‘DEKIRUNEKO’;
※文の最後の「;」(セミコロン)を忘れないようにしてください。これを忘れると、コンパイルエラーになります。
特別なデータ型
PL/SQLでは、データベースの列と変数のデータ型を簡単に一致させるための方法が用意されています。a scott.emp.ename%TYPE;
これは、scottユーザーが所有するemp表のename列のデータ型と同じデータ型で、変数aを宣言するコードです。
このように、データベース上の表と列を「.」(ピリオド)でつないで記述し、「%TYPE」というキーワードを付ければよいのです。これを「属性」と呼んでいます。
値の代入と利用法
それでは、変数に値を代入(格納)する方法を紹介します。変数名 := 値または式;
PL/SQLでは、変数に値を代入する際は、「:=」(コロンとイコール)を用います。
別の変数の中身を代入する場合もあるし、何らしらの演算結果(加減乗除や関数の実行結果)を代入する場合もあるでしょう。こうしたものを「式」と呼んでいます。

只要你认真去学,你一定能学会的,下一课继续加油哦!

如果你觉得这个网站对学习有帮助,一定要跟亲朋好友分享哦!
Lesson2 Lesson4