0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PL/SQL #3 例外処理

Posted at

Java同様に例外処理を設けることが可能です。
(私的にはCASE文などで考慮してしまう方が処理としては好き)

例外処理を実行する場合
・EXCEPTIONで処理を区切る
・例外にするエラー内容を明確にする
ことが重要。

https://docs.oracle.com/cd/F10533_01/TTPLS/exceptions.htm
オラクルの明示的エラーを参照して作成していく

例えば、複数行が返された場合
ORA-01422が出力される
これにはORA-01422 は too_many_rows というエラー名であることがわかるため

BEGIN
    SELECT empno INTO e_emp FROM emp;
EXCEPTION
      WHEN too_many_rows THEN 処理;
END;

といった具合に例外的な処理を記載することができる。

SELECT INTO で複数行が帰ってくる場合や
逆に1行も戻されない場合にエラーが発生するため
特に後者の方は例外として実装されている場合が多い
(NO_DATA_FOUND)

もちろん何でもかんでもエラーを除外すればいいわけではないので、
基本的にはエラーを考慮しないPL/SQLづくりが望ましいと
私は思います・・・

また、補足として例外処理を行わない場合
特にPL/SQLで作成したデータより大容量の出力ファイルを吐き出す場合などは

EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE(CSVデータ)
    END;

といった具合に例外処理をもちいたデバッグも可能なので
補足までに
※上記のようなデバッグの場合は正常に処理が完了したデータまでを出力し
例外データは次のデータだったといううっかりパターンもあるので
編集処理を見ながらつくること

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?