
PL/SQLとは?
Oracleが、SQLを独自に拡張したプログラミング言語で、SQLによるデータベース操作と、処理をどちらも行わせることができます。
名前の由来
「非手続き型言語」であるSQLを「手続き型言語(Procedural Language)」にしたことが由来になっています。
「手続き型言語」とは?
命令を逐次実行していき、処理結果に応じて変数の値を変化させるものです。C言語を初めとして多くの言語で活用されています。
普通のSQLに比べて、PL/SQLを使うメリット
パフォーマンスが高い
普通のSQLを使うのであれば、例えば、Javaプログラム内でSQLを作成して、一回一回データベースサーバーに問い合わせる必要があります。
それに比べて、PL/SQLで多くのSQLを発行した場合は、データベースに接続する回数が減るので、ネットワークのオーバーヘッドが非常に小さくし、パフォーマンスを向上することができます。
プログラムの汎用性や移植性が高い
あくまで、Oracle内で使われる言語なので、どの言語からも同じように呼び出すことが可能です。
なので、新しい言語で新しくシステムを作りかえるといった場合でも、簡単にプログラムを移植することができます。
PL/SQLを使用する上での注意点
ただし、下記は注意点といえるでしょう。
他のデータベースサーバーとは互換性がない。
MySQLや、SQLServer等の他のデータベースサーバーとの互換性はないので注意です。
システムのリプレイスで、格納するDBサーバーが変わってしまった場合は、他のSQL言語に書き直す必要があります。
PL/SQLの文法もバージョンアップしているので、下位互換性はない。
PL/SQLは、上位互換性はありますが、下位のバージョンでは動作しない場合があるので注意が必要です。
PL/SQLの基本構文
ブロックの基本構造
PL/SQLのブロックの基本構造としては、下記になります。
1 2 3 4 5 6 |
DECLARE(宣言部:省略可能) 宣言部 BEGIN(処理部:必須) 処理部 EXCEPTION(例外処理部:省略可能) END; |
構文の意味
ブロック構文 | 説明 |
---|---|
DECLARE(宣言部:省略可能) | プログラムで使用する変数や、定数を宣言することが可能です。 |
BEGIN(処理部:必須) | プログラムの具体的な内容を記述します。 |
EXCEPTION(例外処理部:省略可能) | プログラムでエラーが発生した場合の処理を記述します。 |
ブロックのネスト構造
処理部は、下記のようにネストさせて記述することが可能です。(最大255回までネスとすることができます。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
DECLARE(宣言部:省略可能) 宣言部 BEGIN(処理部:必須) 処理部 DECLARE(宣言部:省略可能) 宣言部 BEGIN(処理部:必須) 処理部 EXCEPTION(例外処理部:省略可能) END; EXCEPTION(処理部:省略可能) DECLARE(宣言部:省略可能) 宣言部 BEGIN(処理部:必須) 処理部 EXCEPTION(例外処理部:省略可能) END; END; |
なお、内部のブロックで宣言した変数や定数は、ネストしたブロック内でのみしか使用できず、外部からは使用できないので注意です。
コメント
PL/SQLでも、普通のプログラミング言語と同じようにプログラム内にコメントをすることができます。
行コメント
「--」で始まる行は、単一行のコメントを表します。
1 |
--行コメントです。 |
ブロックコメント
「/* ~ */」で囲まれたブロックは、複数行のコメントを表します。
1 2 3 4 |
/* ブロックコメント です。 */ |
この記事へのコメントはありません。