PL/SQLを使って開発する際に注意が必要なのが「予約語(キーワード)」の存在です。これらはPL/SQLの文法として特別な意味を持ち、変数名やテーブル名として使うとエラーの原因になります。本記事では、よく使われるPL/SQLの予約語一覧とその役割、注意点について解説します。
予約語一覧(説明付き)
| 予約語 | 説明 |
|---|---|
| ACCESS | データベースオブジェクトに対するアクセス権限を指定する。 |
| ADD | テーブルに列や制約を追加するために使用される。 |
| ALL | クエリや条件において、すべての行や値を対象とする。 |
| ALTER | 既存のデータベースオブジェクトを変更するために使用される。 |
| AND | 複数の条件を結合し、すべての条件が満たされる場合にTRUEを返す。 |
| ANY | クエリや条件において、いずれかの行や値を対象とする。 |
| AS | エイリアス(別名)を指定するために使用される。 |
| ASC | 昇順で並べ替えるために使用される。 |
| BEGIN | PL/SQLブロックの開始を示すキーワード。 |
| BETWEEN | 範囲内の値をチェックするために使用される。 |
| BY | グループ化や並べ替えに使用される。 |
| CASE | 条件に応じて異なる処理を行うための構文。 |
| CHECK | 列の値に対して条件を設定するために使用される制約。 |
| CLOSE | カーソルを明示的に閉じるために使用される。 |
| COMMIT | トランザクションの変更を確定し、データベースに保存する。 |
| CONNECT | データベースに接続するために使用される。 |
| CONSTANT | 定数を宣言するために使用され、値の変更はできない。 |
| CREATE | 新しいデータベースオブジェクトを作成するために使用される。 |
| CURRENT | 現在の日時やセッションに関する情報を参照する。 |
| CURSOR | クエリの結果セットを処理するために使用されるカーソルを定義する。 |
| DECLARE | PL/SQLブロック内で変数や定数を宣言する。 |
| DEFAULT | 列に対するデフォルト値を指定するために使用される。 |
| DELETE | テーブルからデータを削除する。 |
| DESC | 降順で並べ替えるために使用される。 |
| DISTINCT | 重複する行を排除して一意の結果を返す。 |
| DROP | データベースオブジェクトを削除するために使用される。 |
| ELSE | 条件がFALSEの場合に実行される処理を指定する。 |
| ELSIF | 複数の条件をチェックする場合に使用される。 |
| END | PL/SQLブロックの終了を示すキーワード。 |
| EXCEPTION | エラーや例外が発生した場合の処理を記述する。 |
| EXECUTE | PL/SQLブロックやSQL文を実行する。 |
| EXISTS | サブクエリが1つ以上の行を返すかどうかを確認する。 |
| EXIT | ループやブロックから抜け出すために使用される。 |
| FOR | 指定した回数または条件でループ処理を行う。 |
| FROM | データを取得するテーブルやビューを指定する。 |
| FUNCTION | 特定の処理を行い、結果を返すPL/SQLの関数を定義する。 |
| GRANT | ユーザーに特定の権限を付与するために使用される。 |
| GROUP | データをグループ化して集計処理を行う。 |
| HAVING | グループ化された結果に条件を指定する。 |
| IF | 条件がTRUEかどうかをチェックするために使用される。 |
| IN | 特定の値のリストに含まれているかを確認する。 |
| INSERT | テーブルに新しいデータを挿入する。 |
| INTERSECT | 2つのクエリの結果の共通部分を取得する。 |
| INTO | クエリの結果を変数に格納するために使用される。 |
| IS | PL/SQLブロックやサブプログラムの開始を示す。 |
| LIKE | パターンマッチングを行うために使用される。 |
| LOOP | 繰り返し処理を行うために使用される。 |
| MOD | 除算の余りを返す数学関数。 |
| NOT | 条件がFALSEの場合にTRUEを返す。 |
| NULL | 値が存在しないことを示す特殊なマーカー。 |
| OF | 指定したデータ型やオブジェクトに関連することを示す。 |
| ON | 結合やトリガーに条件を指定するために使用される。 |
| OR | 複数の条件のうち、いずれかがTRUEであればTRUEを返す。 |
| ORDER | クエリの結果を指定の順序で並べ替えるために使用される。 |
| PRAGMA | コンパイラ指令を記述するために使用される。 |
| PROCEDURE | 特定の処理を行うプロシージャを定義する。 |
| RAISE | 例外を発生させるために使用される。 |
| RENAME | データベースオブジェクトの名前を変更するために使用される。 |
| RETURN | 関数から値を返すために使用される。 |
| REVOKE | ユーザーから特定の権限を取り消すために使用される。 |
| ROLLBACK | トランザクションの変更を取り消す。 |
| SELECT | データベースからデータを取得するために使用される。 |
| SET | 変数に値を設定する。 |
| THEN | 条件がTRUEの場合に実行される処理を指定する。 |
| TO | 範囲や変換先を指定する。 |
| TRIGGER | 特定のイベントに応じて実行されるトリガーを定義する。 |
| UNION | 複数のクエリの結果を結合して一つの結果セットにする。 |
| UPDATE | 既存のデータを更新するために使用される。 |
| VALUES | INSERT文で挿入するデータを指定する。 |
| WHEN | 特定の条件がTRUEのときに実行される処理を指定する。 |
| WHERE | データ取得や操作時に条件を指定する。 |
| WHILE | 条件がTRUEの間、繰り返し処理を行う。 |
予約語を使ってはいけない理由と対処法
PL/SQLでは、これらの予約語を変数やテーブル名として使用することはできません。万が一、これらのキーワードを使用する必要がある場合は、引用符を使用することで名前に含めることが可能です。
ただし、引用符で囲んだ名前はケースセンシティブ(大文字小文字が区別される)になるため、通常は避けるのが一般的です。
まとめ
PL/SQLの予約語は、文法として特別な意味を持つため、変数名やテーブル名に使用することは避けましょう。万が一使用する場合は引用符で囲む方法もありますが、保守性を考慮するとおすすめできません。今回紹介した予約語とその用途を把握し、エラーのない効率的なコードを書くための参考にしてください。

