- PR -

DataSetを使用しての更新時のORA-01438調査方法

1
投稿者投稿内容
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2008-07-17 22:33
いつもお世話になります。

odp.netでDataSetを使用しての更新時に
「ORA-01438 この列に許容される指定精度より大きな値です。」
のメッセージが出ることがありますが、このエラーが表示されるタイミングが最後の

「adpT1.Update(dsListT1.Tables("T_HOGE"))」

なためにどのカラムが精度があふれているのかがわかりません。
原因を調査する方法はカラム1つ1つをコメントアウトして再実行して
このエラーが出なくなったらそのカラムが原因、
という方法しかないのでしょうか?
テーブルが小さければいいのですが、カラムが100近いテーブルで
これが出ると泣きそうになってしまいます(涙)。

もっと簡単にどのカラムでオーバフローしているのかがわかる方法は
ありますでしょうか?

どなたかご教示願えませんでしょうか。
よろしくお願いいたします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2008-07-19 11:36
私も余り詳しくないけど・・・

SQLERRMを参照するとフィールド名とか入っていませんか?
V$SQLTEXTLなど直前に実行していたSQL文を格納しているテーブルに、原因SQL文が格納されていたりしませんか?
Oracleサーバ側でSQLトレースを有効にするといった方法はとれないのですか?

#Oracleの運用に詳しい人に、ログ取れないか聞いてみるのが早い気がする。
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2008-07-21 22:14
甕星様

お返事ありがとうございました。

少なくとも「SQLERRM」にはフィールド名は出ませんが、

>V$SQLTEXTLなど直前に実行していたSQL文を格納しているテーブルに、原因SQL文が格納されていたりしませんか?
>Oracleサーバ側でSQLトレースを有効にするといった方法はとれないのですか?

の方法は有効ですね。見落としておりました。
今後使わせていただきます。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)