【PL/SQL】ユーザー定義例外

2020年9月21日

今回は「ユーザー定義例外」についての説明よ。

おう!
今日はこれから「Go to キャ〇ペーン」で
旅行に行くから手短に頼むぜ。

魔理沙
魔理沙
霊夢
霊夢

やめておいた方がよくなくて?
事故責任・・自己責任になるわよ。
トラベルじゃなく、トラブルって言われてるし。
まぁいいわ。手短に行くわ。

ユーザー指定のエラーコード範囲

霊夢
霊夢

ユーザーが使用できるエラーコードとして
「-20000」~「-20999」の1000個分あります。

霊夢
霊夢

ただ、「-20000」から数番は既存パッケージとかで使われているわ。
「-20500」あたりから使用するのがBESTね!

オッケーだぜ。
霊夢!

魔理沙
魔理沙

エラーメッセージの生成

霊夢
霊夢

エラーメッセージを生成するコードを
下に記載しまーす。

DECLARE
    AAA BOOLEAN := TRUE;
BEGIN
    IF AAA THEN
        RAISE_APPLICATION_ERROR(-20500, 'AAAの変数はTRUEです。');
    END IF;
 
    AAA := FALSE;
END;

ほぉ~。
「RAISE_APPLICATION_ERROR」
でエラーを発生させるわけか。

魔理沙
魔理沙

そうそう。
第一引数にエラーコード、
第二引数にエラーメッセージを指定するのよ。

ユーザー定義例外のトラップ

霊夢
霊夢

発生させたエラーは、トラップしたいわよね。
下にコードを載せるわね。

DECLARE
    TEST_ERR EXCEPTION; --(1)
    PRAGMA EXCEPTION_INIT(TEST_ERR, -20500); --(2)
 
    AAA BOOLEAN := TRUE;
BEGIN
    IF AAA THEN
        RAISE_APPLICATION_ERROR(-20500, 'AAAの変数はTRUEです。');
    END IF;
 
    AAA := FALSE;
EXCEPTION
    WHEN TEST_ERR THEN --(3)
        DBMS_OUTPUT.PUT_LINE('ユーザー定義のエラー');
        RAISE;
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('それ以外のエラー');
        RAISE;
END;
霊夢
霊夢

(1)で、任意の名前のエラーを宣言してるよ。
(2)で、エラーコードと、(1)で宣言したエラーを紐付けしてるわ。
(3)で、(1)のエラーをトラップしてるわ。

なるほど~。
“#$%#$%#&$%"(
ゲホげほGEHO

魔理沙
魔理沙
霊夢
霊夢

きゃー!!!!!!!
魔理沙が壊れた~。
すごい発熱じゃない!!!!
咳も!!!
旅行はキャンセルして家にいなさい!
キャンセル料は政府がもってくれるわ。たぶん。
仕組みはよくわからないけど。
昼の街も危険なのよ!

しばらく寝てれば大丈夫だぜ。
たぶん。東村ちきしょー
(ぴーっ!あっ、39.8度だ)
旅行は行くぜ!
またな~。

魔理沙
魔理沙
霊夢
霊夢

寝てなさい!キッ!(ドラちゃん並みの空気砲)

【PL/SQL】メニュー

サイトマップ

2020年9月21日Oracle,PL/SQL,データベース,プログラム

Posted by こっぷ