e-learning、オラクル研修、LMS(学習管理システム)のiStudy

e-learning、オラクル研修、LMS(学習管理システム)のiStudy

第1回 「PL/SQLの概要」

2011.11.14

こんにちは。Oracle研修講師の蓑島好昭です。
今回からPL/SQLについての連載を担当いたします。題して、「PL/SQLを使ってみよう!」。
PL/SQLのツボや小技をなるべくわかりやすい表現で紹介していきたいと思いますので、よろしくお願いいたします。

今回は初回ですからPL/SQLの概要を説明しましょう。

アプリケーションを開発するとき、なんらかのプログラミング言語(JavaやC等)を使用してビジネスロジックを記述します。そして、どのような言語を使うにしても、 リレーショナルデーターベースにアクセスする場合は、その部分をSQLコマンド(例 SELECT, INSERT ,UPDATE, DELETE)で記述するのが普通です。
そして、SQLコマンドはアプリケーション内で実行されるのではなく、データベースに送信されてデータベース上で実行されます。アプリケーションはその結果を変数で取得し、ビジネスロジックの実行を再開します。SQLは言語というよりコマンドですから、ビジネスロジックの記述はできません。したがって、ビジネスロジックの実行は、データベース上ではなく、クライアント側のアプリケーション内で実行されることになります。

実は、アプリケーションから、リレーショナルデータベースに送信できるものは、SQLコマンドだけではありません。送信先がORACLEデータベースの場合はPL/SQLブロックも送信することが可能です。PL/SQLブロックを使えばビジネスロジックの実行をデータベース上で行うことができます。同時にさまざまなメリットが期待できます。

PL/SQLは、ORACLE上で実行できるプログラミング言語です。PL/SQLブロックはPL/SQL言語で記述されたビジネスロジックをまとめたものです。したがって、PL/SQLブロックの中では、変数を宣言して使ったり、条件分岐(IF文)や、繰り返し制御(ループ)などの処理フローを記述できます。もちろん、ブロック内でSQL文の記述も可能です。

PL/SQLブロックを使うことでパフォーマンスが大きく向上できます。例えば、アプリケーション内で個々にSQLを100回実行する場合、アプリケーションとデータベース間のネットワークのやりとり(送信・受信)が100回発生します。しかし、その処理をPL/SQLブロックに記述すれば、送信・受信が1回で済み ネットワークのトラフィックを大きく軽減できます。
この様にPL/SQLを使うことで場合によってはかなりのパフォーマンス向上を期待できます。これは実際にかなりの目に見える効果があります。

私はOracle7の頃、講師のほか開発にも携わっていたのですが、開発中のアプリケーションロジックをPL/SQLブロック化し、データベース上で処理することで非常に顕著なパフォーマンス改善(約20分⇒1~2分)をしたことがあり、PL/SQLのメリットを実感しました。
このような経験をした開発者の方は多いと思います。
まだPL/SQLをマスターしていない開発者の方は、ぜひPL/SQL言語をマスターしてください。
SQLコマンドとともに、必須技術といっても過言ではないと思います。

PL/SQLを用いるメリットは他にも色々とありますが、私が個人的に一番大きいと思うメリットはこのパフォーマンス改善のメリットです。

それでは概要ということで、今回はここまでにします。
次回以降の予定ですが、まず、基本文法のツボを解説していきます。例えば、変数、IF, LOOP, プロシージャ、ファンクション、パッケージ、トリガーなどです。その後、あるいはその合間に、トピックス的な小技や小話をしていければと思っております。

それでは、次回以降どうぞご期待ください。

先頭へ戻る