- PR -

PreparedStatement#setNull(int,int)の使用について

1
投稿者投稿内容
ikdisk
会議室デビュー日: 2003/07/24
投稿数: 1
投稿日時: 2004-08-26 17:28
お世話になっております。
掲題のsetNullメソッドを使用してデータベースにNull値を挿入しようと
試みていますが、エラーで失敗してしまいます。

挿入先:Oracle8.1.7
項目型:Number(10,0)

実行ソース:ps.setNull(3,Types.BIGINT);
//ps はPreparedStatementのインスタンスです。

発生するエラーメッセージは、
java.sql.Exception "ORA-01438:指定した精度を超える値が列に指定されています。"
です。

指定するjava.sql.Typesが誤っているのかと思い、
Types.BIGINT,DOUBLE,INTEGER,SMALLINT,NUMERIC,CHAR,VARCHAR
など想定できる型すべてを使用してみましたが、同じエラーが発生してしまいます。

Oracle側が、CHAR()型やVARCHAR()型の場合は、
ps.setString(3,null);
で、Null値を設定できることは確認していますが、Oracle上の数値項目への
Null値の挿入、更新ができません。

以上、初歩的な質問であるかもしれませんが、
何卒よろしくお願い致します。
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2004-08-26 17:40
引用:

指定するjava.sql.Typesが誤っているのかと思い、
Types.BIGINT,DOUBLE,INTEGER,SMALLINT,NUMERIC,CHAR,VARCHAR
など想定できる型すべてを使用してみましたが、同じエラーが発生してしまいます。



DECIMALでも駄目でしょうか?
顔爺
ベテラン
会議室デビュー日: 2003/10/03
投稿数: 52
投稿日時: 2004-08-26 17:53
cheat ですが、
oracle.jdbc.OracleTypes.NUMERIC を使うとどうなります?
1

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