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