PL/SQLの例外処理

実践オラクルデータベース構築・運用

オラクルデータベース構築オラクルデータベース運用SQL書式PL/SQL書式Oracle Master試験

TOP PL/SQL書式 PL/SQL文法

PL/SQLの例外処理


スポンサードリンク
スポンサードリンク


PL/SQLの例外処理



本項では、PL/SQLの実行時のエラーや警告など例外が、発生した場合の処理を記述する例外処理部について解説します。例外処理を記載しないと、例外が発生した場合、PL/SQLは異常終了しOSに制御が戻ってしまします。そのため例外が発生した場合にどのような対処を行うかを事前に準備しておくことが非常に重要です。

例外処理が行われなかった場合
 そのPL/SQLブロック内での更新処理がロールバックされます。

例外処理が行われた場合
 トランザクションは継続されます。

例外処理は「EXCEPTON」〜「END」の間に記載します。

◆例外処理の書式

EXCEPTION
   WHEN <例外名> THEN
     <例外処理>;
END;

※例外処理にも、「内部例外処理」と「ユーザ定義例外処理」があります。内部例外処理は、さらに「事前定義の内部例外処理」と「無名の内部例外処理」に分かれます。事前定義の内部例外処理には、比較的発生しやすい例外に対してOracleによって事前に名前がつけられた「too_many_rows」や「no_data_found」があります。また無名の内部例外は事前に名前が付いていないORA-XXXエラーをいいます。なお未定義例外に対する処理を記載する際に、OTHERSハンドラを使用します。


以下に例外処理の使用例を示します。

SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON
SQL> @exception_sample
SQL> DECLARE
2 tname dba_users.username%TYPE;
3 BEGIN
4 SELECT username INTO tname FROM dba_users;
5 EXCEPTION
6 WHEN too_many_rows THEN
7 DBMS_OUTPUT.PUT_LINE('TOO MANY ROWS');
8 WHEN others THEN
9 DBMS_OUTPUT.PUT_LINE('OTHERS');
10 END;
11 /
TOO MANY ROWS

PL/SQLプロシージャが正常に完了しました。

SQL>


PL/SQL基礎文法
 ● PL/SQLのコメント

 ● PL/SQLの変数と定数

 ● PL/SQLのIF文

 ● PL/SQLのCASE文

 ● PL/SQLのLOOP文

 ● PL/SQLのGOTO文

 ● PL/SQLのNULL文

 ● PL/SQLのSELECT INTO文

 ● PL/SQLのカーソル(CURSOR)

 ● PL/SQLの例外処理


スポンサードリンク

リンク集 / 免責事項サイトマップ問い合わせ
Copyright (C) 2012  実践オラクルデータベース構築・運用  All rights reserved