最近業務ではOracle DBを使用することがあります。
Oracleには、PL/SQLというものがあると知ったのでそれについて自分なりにまとめてみました。
今回の内容は私が勉強したPL/SQLについての基本のまとめです。
PL/SQLとは
PL/SQL(Procedure Language/Structured Query Language)とは、オラクル社がSQLの手続き型拡張機能として提供する言語。
変数の利用やif、for、loopなどを記述することができます。
PL/SQLの構成
変数宣言
・DECLARE
DECLAREを使って変数宣言を行う。
書き方は「変数 型」。
「CONSTANT」というキーワードを使用すると、その変数は定数として扱われ値が変更できなくなります。
「変数 CONSTANT 型」
例)
・文字列
str VARCHAR(10);
・数値
num NUMBER(8,2);
・%TYPE属性
%TYPE属性を使用して、既存定義のテーブルの列と同じデータ型として変数宣言ができる。
変数名 表名.列名%TYPE ;
例)
aaa TEST.column%TYPE;
・%ROWTYPE属性
%ROWTYPE属性を使用して、表(またはビュー)の行構造を宣言できる。
変数名 表名%ROWTYPE;
例)
aaa TEST%TYPE;
処理部
・処理部は、
BEGIN〜END
で囲む。
・SELECT、INSERT、UPDATE、DELETEなどはそのままSQLを記述する。
・IF文
例)
IF 式1 THEN --処理1 ELSIF 式2 THEN --処理2 ELSE --他の場合の処理 END IF;
・CASE文
例)
CASE WHEN 式1 THEN --処理1 WHEN 式2 THEN --処理2 ELSE --他の場合の処理 END CASE;
・FOR文
FOR文は
FOR 変数 IN 下限値 .. 上限値 LOOP
処理内容
END LOOP;
という形式で記述する。
例)
FOR i IN 1..3 LOOP --繰り返し処理 END LOOP;
例外処理
例外処理は、EXCEPTIONを使用する。
例外処理で検知できる例外に種類がある。
よく出そうなものだけピックアップしてみた。
LOGIN_DENIED:ログインできない
VALUE_ERROR:数値のオーバーフローや NOT NULL 制約に違反
DUP_VAL_ON_INDEX:一意制約違反
OTHERS:その他の例外
コメント
コメントは
文字の前に「--」をつける。
例)
--コメント
複数行のコメントは「/*」と「*/」 で囲む。
例)
/* ここが 複数行 コメント 可能 */