ORA 01438 值大於為此列指定的允許精度

2021-09-08 22:40:32 字數 620 閱讀 3270

number的資料宣告如下:

表示        作用        說明

number(p, s)        宣告乙個定點數        p(precision)為精度,s(scale)表示小數點右邊的數字個數,精度最大值為38,

number(p)        宣告乙個整數        相當於number(p, 0)

number        宣告乙個浮點數        其精度為38,要注意的是scale的值沒有應用,也就是說scale的指不能簡單的理解為0,或者其他的數。

定點數的精度(p)和刻度(s)遵循以下規則:

?        當乙個數的整數部分的長度 > p-s 時,oracle就會報錯

?        當乙個數的小數部分的長度 > s 時,oracle就會捨入。

?        當s(scale)為負數時,oracle就對小數點左邊的s個數字進行捨入。

?        當s > p 時, p表示小數點後第s位向左最多可以有多少位數字,如果大於p則oracle報錯,小數點後s位向右的數字被捨入

所以,當錄入的資料出現其中某一種情況,就有可能報錯!如100.003入到number(6,4)的列中,就會報錯,因為100為三位數,3>6-4

ORA 01438處理方法

解決思路 1 跟蹤執行插入的sql 儲存過程,找到罪魁禍首的行,修改後再次插入。2 最簡單的辦法就是增加目的欄位的精度。ora 01438 value larger than specified precision allowed for this column 由於定位不到具體的表以及具體的字段,...

ORA 01438處理方法

ora 01438處理方法 解決思路 1 跟蹤執行插入的sql 儲存過程,找到罪魁禍首的行,修改後再次插入。2 最簡單的辦法就是增加目的欄位的精度。由於定位不到具體的表以及具體的字段,需要跟蹤錯誤 1 首先進行建立表 sql create table t many number 4,2 table ...

ORA 01438 值大於為此列指定的允許精度

number的資料宣告如下 表示 作用 說明 number p,s 宣告乙個定點數 p precision 為精度,s scale 表示小數點右邊的數字個數,精度最大值為38,number p 宣告乙個整數 相當於number p,0 number 宣告乙個浮點數 其精度為38,要注意的是scale...