以下のように表示されます。
(日本語)
ORA-01403: データが見つかりません。
(英語)
ORA-01403: no data found
発生パターン
このエラーは以下のような場合に発生します。
- PL/SQL内でSELECT~INTO句を使用している箇所で、SELECT結果が存在しない
- PL/SQL内で配列を使用している箇所で、初期化されていないインデックス要素にアクセスしようとした
- エラー例
- SQL> DECLARE 2 aa VARCHAR2(100); 3 BEGIN 4 SELECT user_name INTO aa FROM m_user WHERE user_id = '123'; 5 DBMS_OUTPUT.PUT_LINE(aa); 6 END; 7 / DECLARE * 行1でエラーが発生しました。: ORA-01403: データが見つかりません。 ORA-06512: 行4
SELECT結果が存在しない前提です。
対処法
- SELECT~INTO句で結果が存在しない可能性がある場合は、BEGIN~EXCEPTION~ENDで囲って例外処理を記述する。
(結果が存在しない場合は、NO_DATA_FOUNDエラーが発生します。) - 配列生成時は、必ず初期化するように注意してコーディングする。
(歯抜けのインデックス番号はバグの元なので、歯抜けにしないようにする。)