錯誤訊息:ORA-01438: value larger than specified precision allowed for this column
欄位定義為 NUMBER(4,2),意為 總位數 4 位,小數 2 位,整數部分僅剩 2 位(範圍 -99.99 ~ 99.99)。嘗試插入 200.12(整數部 3 位)即超出精度導致報錯。
p (precision):總有效數字位數,最大 38。s (scale):小數點右側位數。可為負數,表示向左捨入(十位、百位...)。NUMBER(4, -3):儲存 1234 → 實際存 1000(千位捨入)。NUMBER(4, -2):儲存 1234 → 實際存 1200(百位捨入)。| Oracle 定義 | 語意 | 對應 Java/應用型別 |
|---|---|---|
NUMBER(10,6) | 含 6 位小數 | Double / BigDecimal |
NUMBER(4) | 整數,等同 NUMBER(4,0) | Integer / Long |
p。ALTER TABLE MODIFY(需鎖表)。NUMBER(19,4) 或更高精度,並搭配 CHECK 約束。