状態を示すセマフォとして大きな Java double 値 (MAX-1d = +1.7976931348623155E308) を使用するアプリケーションを移植しています。エラーを生成せずにこの値を受け入れるように列を定義する方法を理解できません: ORA-01426: 数値オーバーフロー。FLOAT のさまざまな精度 (126 まで)、DOUBLE_PRECISION および BINARY_DOUBLE を試し、TO_BINARY_DOUBLE を使用するトリガーを試みましたが、すべて失敗しました。11gを使用しています。DB2 は DOUBLE をデータ型として受け入れ、この値を処理します。
-- DDL for Table TEST (generated from specifying BINARY_DOUBLE for COLUMN1)
CREATE TABLE "DB2ADMIN"."TEST"
( "COLUMN1" BINARY_DOUBLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
insert into test (column1) values (+1.7976931348623155E308);
ERROR at line 1:
ORA-01426: numeric overflow