【PL/SQL】ユーザー定義例外
![](https://www.prgkop.com/wp-content/uploads/2020/07/02-1.png)
今回は「ユーザー定義例外」についての説明よ。
おう!
今日はこれから「Go to キャ〇ペーン」で
旅行に行くから手短に頼むぜ。
![魔理沙](https://www.prgkop.com/wp-content/uploads/2020/07/226.png)
![霊夢](http://www.prgkop.com/wp-content/uploads/2020/07/156-1.png)
やめておいた方がよくなくて?
事故責任・・自己責任になるわよ。
トラベルじゃなく、トラブルって言われてるし。
まぁいいわ。手短に行くわ。
ユーザー指定のエラーコード範囲
![霊夢](http://www.prgkop.com/wp-content/uploads/2020/07/201-1.png)
ユーザーが使用できるエラーコードとして
「-20000」~「-20999」の1000個分あります。
![霊夢](http://www.prgkop.com/wp-content/uploads/2020/07/162-1.png)
ただ、「-20000」から数番は既存パッケージとかで使われているわ。
「-20500」あたりから使用するのがBESTね!
オッケーだぜ。
霊夢!
![魔理沙](http://www.prgkop.com/wp-content/uploads/2020/07/226.png)
エラーメッセージの生成
![霊夢](http://www.prgkop.com/wp-content/uploads/2020/07/200-1.png)
エラーメッセージを生成するコードを
下に記載しまーす。
DECLARE
AAA BOOLEAN := TRUE;
BEGIN
IF AAA THEN
RAISE_APPLICATION_ERROR(-20500, 'AAAの変数はTRUEです。');
END IF;
AAA := FALSE;
END;
ほぉ~。
「RAISE_APPLICATION_ERROR」
でエラーを発生させるわけか。
![魔理沙](http://www.prgkop.com/wp-content/uploads/2020/07/229.png)
![](https://www.prgkop.com/wp-content/uploads/2020/07/200-1.png)
そうそう。
第一引数にエラーコード、
第二引数にエラーメッセージを指定するのよ。
ユーザー定義例外のトラップ
![霊夢](http://www.prgkop.com/wp-content/uploads/2020/07/101-1.png)
発生させたエラーは、トラップしたいわよね。
下にコードを載せるわね。
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;
![霊夢](https://www.prgkop.com/wp-content/uploads/2020/07/04-1.png)
(1)で、任意の名前のエラーを宣言してるよ。
(2)で、エラーコードと、(1)で宣言したエラーを紐付けしてるわ。
(3)で、(1)のエラーをトラップしてるわ。
なるほど~。
“#$%#$%#&$%"(
ゲホげほGEHO
![魔理沙](http://www.prgkop.com/wp-content/uploads/2020/07/206.png)
![霊夢](http://www.prgkop.com/wp-content/uploads/2020/07/202-1.png)
きゃー!!!!!!!
魔理沙が壊れた~。
すごい発熱じゃない!!!!
咳も!!!
旅行はキャンセルして家にいなさい!
キャンセル料は政府がもってくれるわ。たぶん。
仕組みはよくわからないけど。
昼の街も危険なのよ!
しばらく寝てれば大丈夫だぜ。
たぶん。東村ちきしょー
(ぴーっ!あっ、39.8度だ)
旅行は行くぜ!
またな~。
![魔理沙](http://www.prgkop.com/wp-content/uploads/2020/07/173.png)
![霊夢](http://www.prgkop.com/wp-content/uploads/2020/07/75-1.png)
寝てなさい!キッ!(ドラちゃん並みの空気砲)