連載
» 2017年03月14日 05時00分 公開

超入門「PL/SQL」(1):PL/SQLとは何か プログラムの特徴と基本構造を理解する (2/2)

[小笠原宏幸,株式会社アシスト]
前のページへ 1|2       

PL/SQLプログラムの構造を理解する

 続いて、PL/SQLプログラムの構造を解説します。次回からPL/SQLの記述方法を解説していきます。その基礎になりますので、ここはしっかりと押さえておいてください。

 PL/SQLで作成したプログラムを「PL/SQLブロック」と呼びます。このPL/SQLブロックは、4つのキーワードで区切られた3つの「部」で構成されます(図4)。

photo 図4 PL/SQLプログラムの構造

 DECLARE以降が「宣言部」、BEGIN以降が「実行部」、EXCEPTION以降が「例外処理部」となり、最後のENDでブロックの終了を宣言するという構造となっています。

DECLARE〜〜:宣言部

 宣言部では、ブロック内で使用するオブジェクト(変数やカーソルなど)の定義を記述します。

BEGIN〜〜:実行部

 実行部では、SQLによるデータ操作や、手続き処理(反復文や分岐文など)など、実際に行う処理を記述します。

EXCEPTION〜〜:例外処理部

 PL/SQLでは、エラーのことを「例外」と呼びます。例外処理部では、ブロック内で発生した例外に対する処理方法を記述します。

END

 END;で、PL/SQLブロックの終了を宣言します。

 なお、オブジェクトの定義が必要なかったり、例外への対処を指定する必要がなかったりする場合には、宣言部と例外処理部は省略できます。

簡単なプログラムでPL/SQLのブロック構造をおさらい

 最後に、簡単なプログラムでPL/SQLのブロック構造をおさらいしましょう。プログラム内でどのような処理を行っているのかについては、「/*xxxxxx*/」で囲まれているコメントを参照してください

DECLARE
  e_sal NUMBER(7);	/* e_salという変数をNUMBER型で宣言 */
BEGIN
  SELECT sal INTO e_sal FROM emp
  WHERE  empno = 7788;	/* EMP表からEMPNO列が7788の行のSAL列のデータを取り出し、e_sal変数に代入 */
    IF e_sal > 2000 THEN
      UPDATE emp SET comm = 500 
      WHERE empno = 7788;
    END IF;	/* e_sal変数の値が2000より大きければ、EMPNO列が7788の行のcomm列の値を500に更新 */
EXCEPTION
  WHEN too_many_rows THEN null;	/* 実行部のSELECT文が複数行戻した場合はエラーが発生するが、何もせずに正常終了する */
END;
PL/SQLプログラムの例

 次回からは具体的な記述方法などを解説していく予定です。

筆者紹介

小笠原宏幸(おがさわら ひろゆき)

株式会社アシスト データベース技術本部所属。普段はOracle、PostgreSQL、JP1などの分野で研修講師を担当。また、書籍「SQL逆引き大全363の極意」(株式会社秀和システム)をはじめ、「これならわかるOracle超入門教室」(株式会社翔泳社)、「プロとしてのPL/SQL入門」(SBクリエイティブ株式会社)の共著も担当。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

8月8日10時30分〜16時30分の間、システムメンテナンスのため記事の一部表示や資料のダウンロードができなくなります。ご理解のほどよろしくお願いいたします。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。