1. 基本となる3つのブロック
/* 基本となる3つのブロック */
DECLARE
-- 宣言部
-- 変数・定数・型・カーソルなどを定義します
BEGIN
-- 処理部
-- 処理を記述します
EXCEPTION
-- 例外処理部
-- BEGINの中で例外が発生した場合の例外処理を記述します
END;
宣言部DECLARE
宣言部では、変数・定数・型・カーソルなどの定義を行います。
キーワードDECLARE
を使用して宣言部を記述します。
処理部BEGIN
この中に処理を記述します。
キーワードBEGIN
を使用して処理部を記述します。
この処理部内にてカーソルを1レコードずつLOOPさせ処理していく形になります。
例外処理部EXCEPTION
処理部で例外が発生した場合の例外処理を記述します。
キーワードEXCEPTION
を使用して例外処理部を記述します。
ブロックの終わりEND
ブロックの終わりには、キーワードEND
を使用します。
2. よくある処理の流れ
PL/SQLは、バッチ処理にて利用される事が多いと思いますが、
その際の処理の流れは、基本的には以下のパターンになるかと思います。
- 必要な情報を元となるテーブル群から取得し、カーソルを作成。
- 取得したカーソルを1レコードずつ処理しデータを加工。
- 加工したレコードを任意の形式で出力(任意のテーブルへINSERT・UPDATEするなど)
- カーソルの全てのレコードに対して2・3を繰り返す。
私が触る必要のあったバッチも上記の様に、
元となるテーブル群をJOINした結果からカーソルを作成して1レコードずつ加工した後、出力用テーブルへINSERTする形式となっていました。
#おまけ
PL/SQLは何の略?
PL/SQLの「PL」は「Procedural Language」のことらしい。
SQLを手続き型言語(Procedural Language)に拡張した言語であることからそのように命名されたとのこと。
ベースとなった言語
PL/SQLは、Adaという言語をベースとして作られたらしい。
ちなみに、Adaの読み方は「エイダ」。
https://ja.m.wikipedia.org/wiki/Ada
おわり