続いて、PL/SQLプログラムの構造を解説します。次回からPL/SQLの記述方法を解説していきます。その基礎になりますので、ここはしっかりと押さえておいてください。
PL/SQLで作成したプログラムを「PL/SQLブロック」と呼びます。このPL/SQLブロックは、4つのキーワードで区切られた3つの「部」で構成されます(図4)。
DECLARE以降が「宣言部」、BEGIN以降が「実行部」、EXCEPTION以降が「例外処理部」となり、最後のENDでブロックの終了を宣言するという構造となっています。
宣言部では、ブロック内で使用するオブジェクト(変数やカーソルなど)の定義を記述します。
実行部では、SQLによるデータ操作や、手続き処理(反復文や分岐文など)など、実際に行う処理を記述します。
PL/SQLでは、エラーのことを「例外」と呼びます。例外処理部では、ブロック内で発生した例外に対する処理方法を記述します。
END;で、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;
次回からは具体的な記述方法などを解説していく予定です。
株式会社アシスト データベース技術本部所属。普段はOracle、PostgreSQL、JP1などの分野で研修講師を担当。また、書籍「SQL逆引き大全363の極意」(株式会社秀和システム)をはじめ、「これならわかるOracle超入門教室」(株式会社翔泳社)、「プロとしてのPL/SQL入門」(SBクリエイティブ株式会社)の共著も担当。
Copyright © ITmedia, Inc. All Rights Reserved.