ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

ORA-01400 NULLは挿入できません。

ASP.NET1.1のWebシステムを、Windows2000ServerからWindows2003Serverに
稼動環境を移行した際、ODP.NET絡みのエラーがおきました。
特定の登録処理で以下のエラーメッセージが出てしまいます。
エラーメッセージ

ORA-01400("スキーマ名","テーブル名","カラム名")にはNULLは挿入できません。

調べた結果、下記の処理を行っている箇所で
Windows2003Serverではエラーとなっていました。


  • 行数が0件のDataTableに対してClear()関数を呼び出す。
  • DataTableに値を設定する。
  • 登録処理はDataTable.Update()関数にて実行。

対応策としては
行数が1件以上の場合DataTableのClear()関数を呼び出す。
ことにしました。
行数が0件の場合はClear()すると、Update()実行時にエラー
となるようです。

今回のまとめ
1. 行数が0件のDataTableに対してClear()後、Update()するとエラーとなる。
2. そもそも0件のデータに対してClear()しない(苦笑)

・・・どうせなら0件のDataTableにClear()を実行した時点でエラーとなってくれれば
よかったのに・・・。