電子書籍の厳選無料作品が豊富!

質問するカテゴリが間違っていたら申し訳ありません。
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のロックではないので問題は無いとは思っているのですが・・・。
ご存知の方がいらっしゃいましたらご教授いただけますでしょうか。
お願いします。

A 回答 (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_sq …
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/27 11:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す