|
|
|
|
独自の例外を定義 |
|
スポンサード リンク
独自に例外を定義する方法は以下になります。
例外名 EXCEPTION;
RAISE 例外名; |
一番シンプルな独自例外の定義です。
エラーを発生させる場合は、RAISEコマンドで発生させます。
この例外は、システムエラー以外の、業務的なエラー(論理エラー)などを発生させる場合に使用します。 |
PRAGMA EXCEPTION_INIT(例外名,オラクルエラー番号) |
事前定義例外以外で、オラクルエラーの例外を定義したい場合にしようします。オラクルエラー番号に使用するのは、マイナスのエラー番号になります。
例) オラクルエラー番号の指定例
ORA-00500 → -500 |
例1) 独自例外「null_data_exception」のサンプル
|
declare
v_dept_id dept.dept_id%type;
v_dept_name dept.dept_name%type;
-- 独自例外「null_data_exception」を定義
null_data_exception exception;
begin
select dept_id,dept_name into v_dept_id,v_dept_name from dept
where dept_id = 'D05';
if v_dept_name is null then
-- 独自例外を発生させる
raise null_data_exception;
end if;
dbms_output.put_line('部門コード:' || v_dept_id);
dbms_output.put_line('部門名:' || v_dept_name);
exception
when null_data_exception then
-- 独自例外例外「null_data_exception」が発生した場合の処理
dbms_output.put_line('部門名称がNULLです');
when others then
dbms_output.put_line('その他エラー');
end;
|
例2) プラグマでオラクルエラー”ORA-12899”を独自例外で定義。
|
declare
value_too_large exception;
-- 独自例外「value_too_large」を定義
pragma exception_init(value_too_large,-12899);
begin
insert into dept values('D06A','人事部');
commit work;
exception
when value_too_large then
-- 独自例外例外「value_too_large」が発生した場合の処理
dbms_output.put_line('登録データが大きすぎます');
when others then
dbms_output.put_line('その他エラー');
end;
|
スポンサード リンク
|
|
|
|
|