• 締切済み

ORA-1403

質問するカテゴリが間違っていたら申し訳ありません。 oracleを使用しWEBアプリを開発しています。 DB連携を行っていて、 WEB--DB--DB処理という形になっています。 言語はWEB側が java1.5(struts1.2)コンパイルは1.4準拠 DB処理が Cです。(PRO C?) WEB側で値を格納し、DB側で入力値によって処理を 行い結果を格納するのですが、たまにORA-1403のエラーが発生し 正しく処理ができません。 例 tbl_master A001(PK), A002   , A003 ID    , linkcode , 結果 tbl_link001 A001(PK), A002  , A003 ID    , 値1  , 値2 WEB側でDB格納する際にDB接続からリリースまでのメソッドに synchronizedをかけていますが、これが影響しているのでしょうか? DBのロックではないので問題は無いとは思っているのですが・・・。 ご存知の方がいらっしゃいましたらご教授いただけますでしょうか。 お願いします。

みんなの回答

回答No.1

ORA-01403はNO_DATA_FOUNDということで1件もレコードが ヒットしなかったときに出るエラーです。 Pro*Cの中で select col1 into host_XXX from hogehoge where col2 = host_YYY; といったようなSELECT INTO命令を実行していませんか? その場合、host_XXXに入れる値が一件も無かった場合、 (col2 = host_YYYの条件を満たすレコードが無かった場合や  そもそもhogehoge表が空の場合) ORA-01403が発生してしまいます。 「たまに」ORA-01403のエラーが発生するというのはおそらく ヒットする場合とヒットしない場合があるからだと思います。 逆に2件以上ヒットしてしまうとORA-01422(TOO_MANY_ROWS) が発生してしまいます。

参考URL:
http://dongrico.fc2web.com/hp_sozai/pl_sql/pl_sql_exception.html
jtakato
質問者

お礼

ご回答ありがとうございます。 確認して再度実行してみます。

関連するQ&A